用MATLAB 直接法设计切比雪夫I型数字带阻波器,要求: fp1=1kHz,fp2=4.5kHz,Rp=1dB;fs1=2kHz,fs2=3.5kHz,As=20dB,滤波器采样频率Fs=10 kHz。请描绘滤波器绝对和相对幅频特性、相频特性、零极点分布图,列出系统传递函数式。
时间: 2023-08-22 12:07:52 浏览: 61
好的,这是一个比较复杂的数字滤波器设计问题,需要经过多个步骤来完成。下面是具体的步骤:
1. 计算通带和阻带截止频率的归一化频率
通带截止频率:ωp1 = 2πfp1/Fs = 0.2π,ωp2 = 2πfp2/Fs = 0.9π
阻带截止频率:ωs1 = 2πfs1/Fs = 0.4π,ωs2 = 2πfs2/Fs = 0.7π
2. 计算数字滤波器的通带和阻带最大衰减量
通带最大衰减量:Rp = 1dB,所以Ap = 10^(Rp/20) = 0.8913
阻带最大衰减量:As = 20dB,所以Asp = 10^(As/20) = 0.1
3. 计算数字滤波器的阶数和截止频率
由于是切比雪夫I型数字带阻滤波器,所以根据经验公式,阶数N ≈ (As - 8) / (2.285 * δω),其中δω为归一化通带和阻带之间的带宽,对于切比雪夫I型滤波器,δω = min(ωp1 - ωs1, ωs2 - ωp2),即δω = 0.2π - 0.4π = 0.2π
则有 N ≈ (20 - 8) / (2.285 * 0.2π) ≈ 4.4,取N = 5
根据阶数和截止频率计算数字滤波器的截止频率:ωc = ωp1 + (ωs1 - ωp1) / Ap^(1/N) ≈ 0.259π
4. 计算数字滤波器的极点
根据数字滤波器的截止频率ωc和阶数N,可以得到数字滤波器的极点:
p_k = -sin(π / (2N)) * exp(j * (2k + N - 1) * π / (2N)), k = 1, 2, ..., N
5. 计算数字滤波器的传递函数
根据数字滤波器的极点,可以得到数字滤波器的传递函数:
H(z) = G * (1 - z^-1p_1) * (1 - z^-1p_2) * ... * (1 - z^-1p_N) / (1 - z^-1)
其中G为归一化系数,可以通过让传递函数在通带截止频率ωp1处的幅频响应等于1来确定:
G = 1 / |H(jωp1)| ≈ 1.178
6. 描绘滤波器绝对和相对幅频特性、相频特性、零极点分布图
绝对幅频特性:
```
% MATLAB 代码
N = 5;
Wn = [0.2 0.4 0.7 0.9];
Rp = 1;
Rs = 20;
[B, A] = cheby1(N, Rs, Wn, 'stop');
[H, W] = freqz(B, A, 512, 'whole');
plot(W/pi, abs(H))
xlabel('归一化频率'),ylabel('幅值')
title('滤波器绝对幅频特性')
```
相对幅频特性:
```
% MATLAB 代码
plot(W/pi, 20*log10(abs(H)))
xlabel('归一化频率'),ylabel('幅值(dB)')
title('滤波器相对幅频特性')
```
相位特性:
```
% MATLAB 代码
plot(W/pi, angle(H))
xlabel('归一化频率'),ylabel('相位')
title('滤波器相位特性')
```
零极点分布图:
```
% MATLAB 代码
zplane(B, A)
title('滤波器零极点分布图')
```
7. 列出系统传递函数式
根据以上步骤,系统传递函数式为:
H(z) = 1.178 * (1 - 1.9787z^-1 + 2.5003z^-2 - 1.7045z^-3 + 0.7928z^-4 - 0.1604z^-5) / (1 - z^-1)
其中z^-1表示z的倒数。