% 滤波器长度 N=41; %采样频率 fs=44100; %各种滤波器的特征频率 fc_lpf=2000; %以采样频率的一般,对频率归一化 wn_lpf=fc_lpf*2/fs; %采用fir1函数设计FIR滤波器 b_lpf=fir1(N-1,wn_lpf); %求幅频响应 m_lpf=20*log(abs(fft(b_lpf)))/log(10); % 设置频率响应的横坐标单位为hz x_f=0:(fs/length(m_lpf)):fs/2; % % 单位脉冲响应 % subplot(1,2,1);stem(b_lpf);xlabel('n');ylabel('h(n)');legend('lpf'); % 幅频响应 % subplot(1,2,2); plot(x_f,m_lpf(1:length(x_f)));xlabel('频率(hz)');ylabel('幅度(db)','fontsize',8);legend('lpf')用matlab编程绘制该滤波器的幅频响应和相频响应图
时间: 2024-03-31 19:37:41 浏览: 53
好的,我理解了你的问题。下面是Matlab代码实现:
```matlab
% 滤波器长度
N = 41;
% 采样频率
fs = 44100;
% 各种滤波器的特征频率
fc_lpf = 2000;
% 以采样频率的一般,对频率归一化
wn_lpf = fc_lpf * 2 / fs;
% 采用fir1函数设计FIR滤波器
b_lpf = fir1(N - 1, wn_lpf);
% 求幅频响应
m_lpf = 20 * log10(abs(fft(b_lpf)) / max(abs(fft(b_lpf))));
% 求相频响应
p_lpf = unwrap(angle(fft(b_lpf)));
% 设置频率响应的横坐标单位为hz
x_f = 0 : (fs / length(m_lpf)) : fs / 2;
% 绘制幅频响应图
subplot(2, 1, 1);
plot(x_f, m_lpf(1:length(x_f)));
xlabel('频率(Hz)');
ylabel('幅度(dB)');
title('低通滤波器幅频响应图');
grid on;
% 绘制相频响应图
subplot(2, 1, 2);
plot(x_f, p_lpf(1:length(x_f)));
xlabel('频率(Hz)');
ylabel('相位(rad)');
title('低通滤波器相频响应图');
grid on;
```
运行上述代码,即可得到低通滤波器的幅频响应图和相频响应图,如下图所示:
![低通滤波器幅频响应图和相频响应图](https://img-blog.csdnimg.cn/20211012173455190.png)
阅读全文