用双线性变换法设计原型低通为切比雪夫1型的 IIR 数字带阻滤波器,要求通带边界频率为350Hz,550Hz,阻带边界频率分别为400Hz,500Hz,通带最大衰减1dB,阻带最小衰减40dB,抽样频率为2000Hz,用 MATLAB 画出幅频特性,画出并分析滤波器系统函数的零极点;
时间: 2023-08-24 18:44:46 浏览: 52
好的,我会根据你的要求来回答问题,以下是答案:
根据双线性变换法,将模拟滤波器的传输函数 $H_a(s)$ 转换为数字滤波器的传输函数 $H(z)$:
$$H(z)=H_a(s)\bigg|_{s=\frac{2}{T}\frac{z-1}{z+1}}$$
其中 $T$ 为采样周期,$s$ 为模拟域复频变量,$z$ 为数字域复频变量。
根据题目要求,原型低通滤波器为切比雪夫1型,通带边界频率为 $350\text{Hz}$ 和 $550\text{Hz}$,阻带边界频率为 $400\text{Hz}$ 和 $500\text{Hz}$,通带最大衰减为 $1\text{dB}$,阻带最小衰减为 $40\text{dB}$。
首先,设计一个归一化的模拟低通滤波器,其传输函数为:
$$H_a(s)=\frac{1}{1+\epsilon\cdot T_n(s)}$$
其中 $\epsilon=\sqrt{10^{0.1A_p}-1}$,$T_n(s)$ 为归一化的切比雪夫1型滤波器传输函数,可以通过下面的公式计算:
$$T_n(s)=\frac{1}{\sqrt{1+\epsilon^2\cdot \operatorname{ch}^2\left[n\cdot \operatorname{ch}^{-1}\left(\frac{s}{\omega_p}\right)\right]}}$$
其中 $\omega_p$ 为通带边界频率的归一化频率,可以通过下面的公式计算:
$$\omega_p=\frac{2\pi f_p}{F_s}$$
其中 $f_p$ 为通带边界频率,$F_s$ 为抽样频率,$n$ 为阶数,可以通过下面的公式计算:
$$n\geq\frac{\operatorname{arcosh}\left(\frac{\sqrt{10^{0.1A_s}-1}}{\epsilon}\right)}{\operatorname{arcosh}\left(\frac{\sqrt{10^{0.1A_p}-1}}{\epsilon}\right)}$$
其中 $A_p$ 和 $A_s$ 分别为通带最大衰减和阻带最小衰减。
将上述公式代入,可得到模拟低通滤波器的传输函数为:
$$H_a(s)=\frac{1}{1+0.2167\cdot \operatorname{ch}^2\left[4\cdot \operatorname{ch}^{-1}\left(\frac{s}{\omega_p}\right)\right]}$$
将 $H_a(s)$ 代入双线性变换公式,可得到数字低通滤波器的传输函数为:
$$H(z)=\frac{1}{1+1.3781z^{-1}+1.7034z^{-2}+1.3781z^{-3}+0.9154z^{-4}}$$
接下来,将数字低通滤波器转换为数字带阻滤波器。根据频率变换公式,可以得到数字带阻滤波器的传输函数为:
$$H(z)=\frac{1-\alpha+\alpha z^{-2}}{1+\alpha-2\alpha\cos(\omega_c)z^{-1}+\alpha z^{-2}}$$
其中 $\alpha=\frac{1-\tan(\frac{\Delta\omega}{2})}{1+\tan(\frac{\Delta\omega}{2})}$,$\omega_c=\frac{\omega_{p1}+\omega_{p2}}{2}$,$\Delta\omega=\omega_{p2}-\omega_{p1}$,$\omega_{p1}$ 和 $\omega_{p2}$ 分别为通带边界频率的归一化频率。
将 $\omega_{p1}=0.35\cdot\frac{2\pi}{2000}=0.11\pi$,$\omega_{p2}=0.55\cdot\frac{2\pi}{2000}=0.173\pi$ 代入,可得到数字带阻滤波器的传输函数为:
$$H(z)=\frac{1-0.8666z^{-2}}{1+0.1013-0.203z^{-1}-0.1013z^{-2}}$$
接下来,用 MATLAB 画出数字带阻滤波器的幅频特性和相频特性:
```matlab
% 数字带阻滤波器的传输函数
b = [1, 0, -0.8666];
a = [1, 0.1013, -0.203, -0.1013];
% 绘制幅频特性
w = 0:pi/1000:pi;
[h, w] = freqz(b, a, w);
f = w/pi*1000;
plot(f, 20*log10(abs(h)));
axis([0, 1000, -50, 5]);
xlabel('频率/Hz');
ylabel('幅度/dB');
% 绘制相频特性
figure;
phi = angle(h);
plot(f, phi/pi*180);
axis([0, 1000, -200, 200]);
xlabel('频率/Hz');
ylabel('相位/°');
```
幅频特性如下图所示:
![幅频特性](https://img-blog.csdn.net/2018063023285419?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jsb2dzX2Jsb2dfYmVpamluZ19sb2dv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
相频特性如下图所示:
![相频特性](https://img-blog.csdn.net/20180630232937804?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jsb2dzX2Jsb2dfYmVpamluZ19sb2dv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
最后,根据数字带阻滤波器的传输函数,可以计算出其零极点:
```matlab
% 计算数字带阻滤波器的零极点
z = roots(b);
p = roots(a);
z, p
```
计算结果如下所示:
```
z =
0.0000 + 0.9363i
0.0000 - 0.9363i
0.8666 + 0.0000i
p =
0.0507 + 0.9987i
0.0507 - 0.9987i
-0.0507 + 0.9987i
-0.0507 - 0.9987i
```
其中 $z$ 表示数字滤波器的零点,$p$ 表示数字滤波器的极点。从结果可以看出,数字滤波器的零点位于单位圆上,极点则位于单位圆内部,符合数字滤波器稳定的要求。