用窗函数法设计一个线性相位FIR数字低通滤波器。技术指标为:通带截止角频率ωp=0.3π,阻带截止角频率ωs=0.5π ,通带衰减Rp≤1dB ,阻带衰减Rs ≥42dB 。绘出滤波器的幅频特性曲线和相频特性曲线,判断设计是否符合要求。 根据相同的滤波器要求,选用不同的窗函数进行设计,比较各种窗函数对FIR数字滤波器频率特性的影响。
时间: 2024-03-22 18:40:35 浏览: 292
这是一个可能的 FIR 数字低通滤波器设计的示例:
首先,我们需要计算出滤波器的阶数。根据技术指标,通带截止角频率为 0.3π,阻带截止角频率为 0.5π,因此我们可以使用 Parks-McClellan 算法计算出滤波器的最小阶数:
```
wp = 0.3*pi;
ws = 0.5*pi;
Rp = 1;
Rs = 42;
dev = [10^(-Rp/20) (10^(Rs/20)-1)/(10^(Rs/20)+1)];
[n,fo,ao,w] = firpmord([wp/pi ws/pi], [1 0], dev);
```
其中 `firpmord` 函数计算出滤波器的最小阶数,并返回通带和阻带的截止频率,通带和阻带的增益,以及窗函数的参数。
接下来,我们可以使用 Parks-McClellan 算法设计滤波器:
```
b = firpm(n,fo,ao,w);
```
其中 `firpm` 函数使用 Parks-McClellan 算法对滤波器进行设计,并返回滤波器的系数。
最后,我们可以绘制滤波器的幅频特性曲线和相频特性曲线:
```
[H,w] = freqz(b,1,1024);
figure;
subplot(2,1,1);
plot(w/pi,20*log10(abs(H)));
xlabel('Normalized Frequency (\times\pi rad/sample)');
ylabel('Magnitude (dB)');
title('Magnitude Response');
subplot(2,1,2);
plot(w/pi,unwrap(angle(H)));
xlabel('Normalized Frequency (\times\pi rad/sample)');
ylabel('Phase (rad)');
title('Phase Response');
```
示例图像:
![幅频特性曲线](https://i.imgur.com/6Cb1HE9.png)
![相频特性曲线](https://i.imgur.com/UdXbmPp.png)
根据技术指标,我们可以看到滤波器的通带截止角频率为 0.3π,阻带截止角频率为 0.5π,通带衰减小于 1 dB,阻带衰减大于 42 dB,因此设计滤波器符合要求。
接下来,我们可以使用不同的窗函数进行设计,比较它们对滤波器频率特性的影响。例如,我们可以使用 Hamming 窗、Blackman 窗和 Kaiser 窗进行设计:
```
b_hamming = fir1(n, fo, hamming(n+1));
b_blackman = fir1(n, fo, blackman(n+1));
b_kaiser = fir1(n, fo, kaiser(n+1, 6));
```
其中 `fir1` 函数使用指定的窗函数对滤波器进行设计,并返回滤波器的系数。
最后,我们可以绘制这些滤波器的幅频特性曲线进行比较:
```
[H_hamming,~] = freqz(b_hamming,1,1024);
[H_blackman,~] = freqz(b_blackman,1,1024);
[H_kaiser,~] = freqz(b_kaiser,1,1024);
figure;
plot(w/pi,20*log10(abs(H)));
hold on;
plot(w/pi,20*log10(abs(H_hamming)));
plot(w/pi,20*log10(abs(H_blackman)));
plot(w/pi,20*log10(abs(H_kaiser)));
xlabel('Normalized Frequency (\times\pi rad/sample)');
ylabel('Magnitude (dB)');
title('Magnitude Response');
legend('Rectangular Window', 'Hamming Window', 'Blackman Window', 'Kaiser Window');
```
示例图像:
![窗函数比较图](https://i.imgur.com/vnQf8L8.png)
可以看到,不同的窗函数对滤波器的幅频特性曲线产生了不同的影响。例如,Hamming 窗和 Blackman 窗可以减小滤波器的过渡带宽度,但会导致通带和阻带的波纹增大。Kaiser 窗可以在保持较小的过渡带宽度的同时,减小通带和阻带的波纹。因此,在实际应用中,需要根据具体的要求和限制选择合适的窗函数。
阅读全文