用matlab实现滤波后语音信号的时域和频域波形
时间: 2024-04-07 12:30:20 浏览: 62
您可以使用MATLAB中的函数来实现滤波后语音信号的时域和频域波形。以下是一个简单的示例代码:
```matlab
% 读取语音信号
[y, Fs] = audioread('input.wav');
% 设计滤波器
[b, a] = butter(6, [1000 4000]/(Fs/2), 'bandpass');
% 应用滤波器
filtered_signal = filter(b, a, y);
% 绘制时域波形
subplot(2,1,1);
plot(y);
title('原始语音信号');
xlabel('样本');
ylabel('幅值');
% 绘制滤波后的时域波形
subplot(2,1,2);
plot(filtered_signal);
title('滤波后的语音信号');
xlabel('样本');
ylabel('幅值');
% 计算频谱
N = length(y);
Y = fft(y);
f = (0:N-1)*(Fs/N);
% 绘制频域波形
figure;
subplot(2,1,1);
plot(f, abs(Y));
title('原始语音信号频谱');
xlabel('频率 (Hz)');
ylabel('幅值');
% 计算滤波后语音信号的频谱
Filtered_Y = fft(filtered_signal);
subplot(2,1,2);
plot(f, abs(Filtered_Y));
title('滤波后的语音信号频谱');
xlabel('频率 (Hz)');
ylabel('幅值');
```
请将代码中的`'input.wav'`替换为您自己的语音文件路径。该代码使用了一个带通滤波器来滤波语音信号,并绘制了原始信号和滤波后信号的时域和频域波形图。
阅读全文