利用matlab完成以下任务1.画出采样后语音信号的时域波形和频谱图。 2.画出滤波器的频率响应。 3.画出滤波后信号的时域波形和频谱。
时间: 2024-02-29 12:53:15 浏览: 92
好的,下面是使用Matlab实现的代码:
```matlab
% 读取音频文件
[x, fs] = audioread('input_audio.wav');
% 绘制采样后语音信号的时域波形和频谱图
Ts = 1/8000; % 采样间隔
t = (0:length(x)-1)*Ts; % 时间轴
subplot(2,1,1)
plot(t, x)
xlabel('Time (s)')
ylabel('Amplitude')
title('Time Domain')
subplot(2,1,2)
X = abs(fft(x));
f = (0:length(X)-1)*fs/length(X);
plot(f, X)
xlim([0 fs/2])
xlabel('Frequency (Hz)')
ylabel('Magnitude')
title('Frequency Domain')
% 设计滤波器
fc = 1000; % 截止频率
[b, a] = butter(6, fc/(fs/2)); % 6阶巴特沃斯滤波器
% 绘制滤波器的频率响应
freqz(b, a)
% 滤波
y = filter(b, a, x);
% 绘制滤波后信号的时域波形和频谱
subplot(2,1,1)
plot(t, y)
xlabel('Time (s)')
ylabel('Amplitude')
title('Filtered Signal (Time Domain)')
subplot(2,1,2)
Y = abs(fft(y));
plot(f, Y)
xlim([0 fs/2])
xlabel('Frequency (Hz)')
ylabel('Magnitude')
title('Filtered Signal (Frequency Domain)')
```
这里使用了butter函数设计了一个6阶的巴特沃斯滤波器,并使用filter函数进行滤波。绘制时域波形和频谱图使用了plot和abs函数,绘制滤波器的频率响应使用了freqz函数。图形的排列使用了subplot函数。
阅读全文