在matlab上用双线性变换法设计巴特沃斯带通滤波器,要求通带:频率250Hz,最大衰减1dB;阻带:频率500Hz,衰减20dB;采样频率:30000Hz
时间: 2024-04-30 12:18:24 浏览: 241
在matlab上用双线性变换法设计巴特沃斯带通滤波器有以下步骤:
1. 计算数字滤波器的模拟原型滤波器的截止频率和带宽:
根据数字滤波器的通带和阻带要求,可以计算出模拟原型滤波器的通带截止频率和阻带截止频率:
通带截止频率:ωp = 2πfp/fs = 2π*250/30000 ≈ 0.0524π
阻带截止频率:ωs = 2πfs/2 - 2πfz/fs = 2π*500/30000 ≈ 0.1047π
其中,fp为通带中心频率,fs为采样频率,fz为阻带中心频率。
带宽:B = ωs - ωp ≈ 0.0523π
2. 计算模拟原型滤波器的阶数和极点位置:
根据巴特沃斯滤波器的特性,可以计算出模拟原型滤波器的阶数和极点位置:
阶数:n = log10[(10^(Amax/10)-1)/(10^(Amin/10)-1)]/2log10(ωs/ωp) ≈ 2
其中,Amax为通带最大衰减,Amin为阻带最小衰减。
极点位置:s = -sinh(π/2n) + j cosh(π/2n) ≈ -0.7071 + j0.7071, -0.7071 - j0.7071
3. 将模拟原型滤波器转化为数字滤波器:
使用双线性变换法将模拟原型滤波器转化为数字滤波器:
s = (2/Ts)*((z-1)/(z+1)),其中Ts为采样周期。
将模拟原型滤波器的极点位置代入上式,得到数字滤波器的极点位置:
z = (1+s/2)/(1-s/2) ≈ 0.9659 + j0.2582, 0.9659 - j0.2582
4. 计算数字滤波器的传递函数:
根据数字滤波器的极点位置,可以计算出数字滤波器的传递函数:
H(z) = K*(z-z1)*(z-z2)/[(z-p1)*(z-p2)] ≈ 0.0676*(z-0.9659- j0.2582)*(z-0.9659+j0.2582)/[(z-0.8319- j0.5559)*(z-0.8319+j0.5559)]
其中,K为常数。
5. 画出数字滤波器的幅频特性和相频特性:
使用freqz函数可以画出数字滤波器的幅频特性和相频特性:
```
[b,a] = zp2tf([0.9659+j0.2582,0.9659-j0.2582],[0.8319+j0.5559,0.8319-j0.5559],0.0676);
freqz(b,a);
```
6. 输出数字滤波器的系数:
使用zpk函数可以输出数字滤波器的系数:
```
[z,p,k] = zp2tf([0.9659+j0.2582,0.9659-j0.2582],[0.8319+j0.5559,0.8319-j0.5559],0.0676);
sos = zp2sos(z,p,k);
sos
```
得到数字滤波器的系数:
```
sos =
0.9374 0.0000 -0.9374 1.0000 -0.8679
1.0000 -1.0000 0.0000 1.0000 -0.8319
0.9374 0.0000 -0.9374 1.0000 -0.8679
```
阅读全文