用matlab语言写滤波后语音信号的时域和频域波形代码
时间: 2024-04-07 22:30:17 浏览: 278
当你想要对语音信号进行滤波并绘制时域和频域波形,你可以使用以下Matlab代码:
```matlab
% 读取语音文件
[x, fs] = audioread('input.wav');
% 设计滤波器
fc = 1000; % 截止频率 (Hz)
[b, a] = butter(6, fc/(fs/2), 'low'); % 6阶低通滤波器
% 应用滤波器
y = filter(b, a, x);
% 绘制时域波形
t = (0:length(x)-1) / fs;
subplot(2,1,1);
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t, y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Filtered Signal');
% 绘制频域波形
N = length(x);
X = fftshift(fft(x));
Y = fftshift(fft(y));
f = (-N/2:N/2-1) * (fs/N);
figure;
subplot(2,1,1);
plot(f, abs(X));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Original Signal');
subplot(2,1,2);
plot(f, abs(Y));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
title('Filtered Signal');
```
请将代码中的'input.wav'替换为你想要滤波的语音文件名。这段代码将使用6阶巴特沃斯低通滤波器,截止频率为1000Hz对语音信号进行滤波,并绘制原始信号和滤波后信号的时域和频域波形图。
阅读全文