用MATLAB信号处理箱提供的fir1函数,设计一个FIR数字高通滤波器.要求:通带截止频率为fp=450Hz,Rp=0.5dB;阻带截止频率为fs=300Hz,As=20dB;采样频率Fs=2000Hz。描绘滤波器的脉冲响应、窗函数及滤波器的幅频响应和相频响应曲线.
时间: 2024-04-08 20:30:48 浏览: 65
好的,我会用MATLAB信号处理工具箱提供的fir1函数来设计一个FIR数字高通滤波器,满足您的要求。
首先,我们需要确定滤波器的阶数。根据公式2.9-3和2.9-6,我们可以计算出所需的阶数为:
N = (As - 7.95) / (14.36 * (fs/fp - 1)) + 1
其中,As为阻带衰减,fs为阻带截止频率,fp为通带截止频率。代入您给出的参数,可以计算得到N的值为:
N = (20 - 7.95) / (14.36 * (300/450 - 1)) + 1 ≈ 25
接下来,我们可以使用fir1函数来设计滤波器。代码如下:
```MATLAB
fp = 450; % 通带截止频率
fs = 300; % 阻带截止频率
Rp = 0.5; % 通带最大衰减
As = 20; % 阻带最小衰减
Fs = 2000; % 采样频率
N = (As - 7.95) / (14.36 * (fs/fp - 1)) + 1; % 计算滤波器阶数
% 使用fir1函数设计高通滤波器
b = fir1(round(N), fp/(Fs/2), 'high', kaiser(round(N)+1, 0.5));
% 绘制滤波器的脉冲响应
figure;
stem(b);
title('Impulse Response');
% 绘制窗函数
figure;
win = kaiser(round(N)+1, 0.5);
plot(win);
title('Window Function');
% 计算滤波器的幅频响应和相频响应
figure;
freqz(b,1,1024,Fs);
title('Frequency Response');
```
运行以上代码,将会得到滤波器的脉冲响应、窗函数以及滤波器的幅频响应和相频响应曲线。
阅读全文