3、音乐信号的抽取(减抽样) (1)观察音乐信号频率上限,选择适当的抽取间隔对信号进行减抽样(给出两种抽取间隔,代表混叠与非混叠); (2)输出减抽样音乐信号的波形和频谱,观察现象,给出理论解释; (3)播放减抽样音乐信号,注意抽样率的改变,比较不同抽取间隔下的声音,解释现象。
时间: 2024-01-25 16:03:01 浏览: 133
基于MATLAB的音乐信号处理_四、对混有噪声的音乐信号进行滤波(noisy. wav):1)在一段音乐信号中混入两个频率,信号
5星 · 资源好评率100%
好的,以下是MATLAB代码来实现音乐信号的抽取(减抽样):
```matlab
clear all; close all; clc;
% 读入音频文件
[x, Fs] = audioread('music.wav');
% 计算音频信号的频率上限
fmax = Fs / 2;
% 选择适当的抽取间隔
% 非混叠情况下的抽取间隔
M1 = floor(fmax / 5000);
% 混叠情况下的抽取间隔
M2 = floor(fmax / 10000);
% 输出减抽样音乐信号的波形和频谱
% 非混叠情况下的波形和频谱
y1 = x(1:M1:end);
Y1 = fft(y1);
f1 = (0:length(Y1)-1) * Fs / length(Y1);
figure;
subplot(2,1,1); plot((0:length(x)-1)/Fs, x);
title('原始音频信号'); xlabel('时间(秒)'); ylabel('幅度');
subplot(2,1,2); plot((0:length(y1)-1)/(Fs/M1), y1);
title('减抽样音频信号(非混叠)'); xlabel('时间(秒)'); ylabel('幅度');
figure;
plot(f1, abs(Y1));
title('减抽样音频信号(非混叠)频谱图'); xlabel('频率(Hz)'); ylabel('幅度');
% 混叠情况下的波形和频谱
y2 = x(1:M2:end);
Y2 = fft(y2);
f2 = (0:length(Y2)-1) * Fs / length(Y2);
figure;
subplot(2,1,1); plot((0:length(x)-1)/Fs, x);
title('原始音频信号'); xlabel('时间(秒)'); ylabel('幅度');
subplot(2,1,2); plot((0:length(y2)-1)/(Fs/M2), y2);
title('减抽样音频信号(混叠)'); xlabel('时间(秒)'); ylabel('幅度');
figure;
plot(f2, abs(Y2));
title('减抽样音频信号(混叠)频谱图'); xlabel('频率(Hz)'); ylabel('幅度');
% 播放减抽样音乐信号
% 改变抽样率
sound(x, Fs); % 原始音频信号
sound(y1, Fs/M1); % 减抽样音频信号(非混叠)
sound(y2, Fs/M2); % 减抽样音频信号(混叠)
```
解释:
此代码首先读入音频文件,并计算音频信号的频率上限。然后,选择适当的抽取间隔(分别为非混叠情况下的抽取间隔和混叠情况下的抽取间隔)对信号进行减抽样。接着,输出减抽样音乐信号的波形和频谱,包括原始音频信号、减抽样音频信号(非混叠)和减抽样音频信号(混叠)。最后,播放减抽样音乐信号,注意抽样率的改变,比较不同抽取间隔下的声音,并解释现象。
在输出的波形和频谱图中,可以观察到减抽样过程中的混叠现象。当抽取间隔过大时,会出现混叠现象,导致频谱图出现明显的谐波扩展和歪曲。而当抽取间隔适当时,减抽样的频谱基本上与原始信号一致,且不出现混叠现象。在播放减抽样音乐信号时,可以听到抽样率的改变对音乐声音的影响,当抽取间隔适当时,减抽样音频信号的音质得到了很好的保留,而抽取间隔过大时,会出现音频信号的失真和杂音。
阅读全文