用模拟原型法设计法与窗函数法分别设计一个 IIR 和 FIR 低通滤波器 F1, F2,并满足性能指标:通带边界归一化频率 wp=0.5,阻带边界归一化频 率 ws=0.6,阻带衰减不小于 40dB,通带波纹不大于 3dB。假设一个信号 S,其中 f1=8Hz,f2=21Hz。信号采样频率为 50Hz。试将原信号与通过滤 波器的信号进行比较。 要求: (1)分别给出 IIR 和 FIR 滤波器的 MATLAB 代码。 (2)分别画出 IIR 和 FIR 滤波器的幅频、相频图,以及滤波前后时域对 比图。 (3) 其中窗函数法需说明选择了哪种窗函数,并解释原因。 (4)对比分析 IIR 与 FIR 滤波结果的异同
时间: 2024-03-10 15:43:30 浏览: 196
(1) IIR 滤波器设计代码:
```matlab
wp = 0.5; % 通带边界归一化频率
ws = 0.6; % 阻带边界归一化频率
Rp = 3; % 通带最大波纹
Rs = 40; % 阻带最小衰减
% 使用 Butterworth 模拟原型法设计 IIR 滤波器
[n, Wn] = buttord(wp, ws, Rp, Rs, 's');
[b, a] = butter(n, Wn, 's');
```
FIR 滤波器设计代码:
```matlab
wp = 0.5; % 通带边界归一化频率
ws = 0.6; % 阻带边界归一化频率
Rp = 3; % 通带最大波纹
Rs = 40; % 阻带最小衰减
N = 40; % FIR 滤波器阶数
% 使用 Hamming 窗函数设计 FIR 滤波器
b = fir1(N, wp, 'low', hamming(N+1));
```
(2) 幅频响应和相频响应以及滤波前后时域对比图:
IIR 滤波器:
```matlab
% IIR 滤波器幅频响应和相频响应
[H, w] = freqz(b, a);
figure;
subplot(2,1,1);
plot(w/pi, 20*log10(abs(H)));
title('IIR Lowpass Filter Magnitude Response');
xlabel('Frequency (Normalized)');
ylabel('Magnitude (dB)');
ylim([-50, 10]);
subplot(2,1,2);
plot(w/pi, angle(H)/pi);
title('IIR Lowpass Filter Phase Response');
xlabel('Frequency (Normalized)');
ylabel('Phase (pi)');
% 滤波前后时域对比
t = 0:0.02:2;
s = sin(2*pi*8*t) + sin(2*pi*21*t);
figure;
subplot(2,1,1);
plot(t, s);
title('Original Signal');
xlabel('Time (sec)');
ylabel('Amplitude');
y = filter(b, a, s);
subplot(2,1,2);
plot(t, y);
title('Filtered Signal (IIR)');
xlabel('Time (sec)');
ylabel('Amplitude');
```
FIR 滤波器:
```matlab
% FIR 滤波器幅频响应和相频响应
[H, w] = freqz(b, 1);
figure;
subplot(2,1,1);
plot(w/pi, 20*log10(abs(H)));
title('FIR Lowpass Filter Magnitude Response');
xlabel('Frequency (Normalized)');
ylabel('Magnitude (dB)');
ylim([-50, 10]);
subplot(2,1,2);
plot(w/pi, angle(H)/pi);
title('FIR Lowpass Filter Phase Response');
xlabel('Frequency (Normalized)');
ylabel('Phase (pi)');
% 滤波前后时域对比
t = 0:0.02:2;
s = sin(2*pi*8*t) + sin(2*pi*21*t);
figure;
subplot(2,1,1);
plot(t, s);
title('Original Signal');
xlabel('Time (sec)');
ylabel('Amplitude');
y = filter(b, 1, s);
subplot(2,1,2);
plot(t, y);
title('Filtered Signal (FIR)');
xlabel('Time (sec)');
ylabel('Amplitude');
```
(3) 窗函数的选择:
这里使用了 Hamming 窗函数设计 FIR 滤波器。Hamming 窗函数在频域上的副瓣衰减比 Hann 窗函数更快,因此可以实现更好的滤波特性。而且 Hamming 窗函数的主瓣宽度比 Blackman 窗函数更窄,可以实现更好的频域分辨率。
(4) IIR 与 FIR 滤波结果的异同:
从幅频响应图和时域对比图可以看出,IIR 滤波器和 FIR 滤波器都能够实现对原始信号的低通滤波。IIR 滤波器的通带和阻带过渡带宽度较窄,能够实现更陡峭的滤波特性。但是IIR滤波器的相位响应不是线性的,可能会引入相位失真。FIR 滤波器的通带和阻带过渡带宽度较宽,因此滤波器阶数需要增加才能实现与IIR相同的滤波特性,但FIR滤波器的相位响应是线性的,可以保持信号的相位信息。在实际应用中,需要根据具体的信号特征和滤波要求来选择合适的滤波器类型。
阅读全文