用窗函数法设计线性相位特性的 FIR 低通数字滤波器,要求该 FIR 低通数字滤波器的通带截止频 率为 0.3 pi rad,阻带截止频率为 0.6 pi rad,阻带最小衰减为 40dB。理想低通滤波器的频率 响应为:编写 MATLAB 程序实现该滤波器,画出 h(n)、幅频特性和相频特性曲线(调用函数 fir1)。
时间: 2024-03-07 17:51:50 浏览: 164
利用MATLAB仿真软件系统结合窗函数法设计一个数字带通FIR滤波器
好的,根据您的要求,我来为您解答这个问题。
首先,我们需要使用窗函数法设计该 FIR 低通数字滤波器。在这个问题中,我们需要设计一个通带截止频率为 0.3 pi rad,阻带截止频率为 0.6 pi rad,阻带最小衰减为 40dB 的低通数字滤波器。根据窗函数法的设计步骤,我们需要进行以下步骤:
1. 计算滤波器的长度 N。在这个问题中,我们可以根据阻带带宽计算滤波器的长度,公式为:
N = (A / (22 * delta_f)) + 1
其中,A 是阻带最小衰减,delta_f 是阻带带宽,可以计算得到:
delta_f = 0.6 pi - 0.3 pi = 0.3 pi
因为要求阻带最小衰减为 40dB,所以 A = 40。带入公式中,可以计算得到:
N = (40 / (22 * 0.3 pi)) + 1 ≈ 29
所以,滤波器的长度为 29。
2. 计算窗函数。在这个问题中,我们可以选择使用 Hamming 窗函数。Hamming 窗函数的表达式为:
w(n) = 0.54 - 0.46 * cos(2 * pi * n / (N - 1))
其中,n 是窗函数的索引,N 是窗函数的长度。我们可以使用 MATLAB 中的 hamming 函数来生成 Hamming 窗函数,代码为:
w = hamming(N);
3. 计算滤波器的单位冲激响应 h(n)。根据窗函数法的公式,可以计算得到:
h(n) = h_ideal(n) * w(n)
其中,h_ideal(n) 是理想低通滤波器的单位冲激响应。在这个问题中,理想低通滤波器的频率响应已经给出,所以我们可以使用 MATLAB 中的 fir1 函数来生成理想低通滤波器的单位冲激响应,代码为:
h_ideal = fir1(N-1, 0.3, 'low');
然后,我们就可以计算滤波器的单位冲激响应了,代码为:
h = h_ideal .* w';
4. 绘制滤波器的幅频特性和相频特性曲线。我们可以使用 freqz 函数来计算滤波器的频率响应,代码为:
[H, W] = freqz(h);
然后,我们就可以绘制幅频特性和相频特性曲线了,代码为:
subplot(2,1,1);
plot(W/pi, 20*log10(abs(H)));
xlabel('Normalized Frequency (\times\pi rad/sample)');
ylabel('Magnitude (dB)');
title('Magnitude Response');
grid on;
subplot(2,1,2);
plot(W/pi, angle(H));
xlabel('Normalized Frequency (\times\pi rad/sample)');
ylabel('Phase (rad)');
title('Phase Response');
grid on;
最终,我们就可以得到滤波器的单位冲激响应 h(n)、幅频特性和相频特性曲线的图像了。图像如下所示:
注意:在程序中,我们使用了 fir1 函数来生成理想低通滤波器的单位冲激响应。这个函数是 MATLAB 中自带的函数,不需要额外编写。另外,在计算滤波器的单位冲激响应时,我们使用了点乘运算符 .* 来计算 h(n),这是因为窗函数和理想低通滤波器的单位冲激响应都是向量,需要进行逐元素的运算。
阅读全文