0.25π rad ≤ w ≤ 0.45π rad,通带最大衰减为3dB,阻带范围为0≤w≤0.15π rad和0.55π rad ≤ w ≤π rad,阻带最小衰减为40dB。利用双线性变换设计,写出设计过程,并用MATLAB绘出幅频和相频特性曲线。
时间: 2024-06-04 08:12:08 浏览: 130
设计过程:
1. 根据通带和阻带要求,设计理想的模拟滤波器。
通带最大衰减为3dB,因此在通带内不需要进行衰减,可以选择一阶低通滤波器,其传递函数为:
$H_{a}(s)=\frac{1}{1+\frac{s}{\omega_{a}}}$
其中,$\omega_{a}$为通带截止频率,根据题目要求,$\omega_{a}=0.45\pi$。
阻带最小衰减为40dB,可以选择二阶带阻滤波器,其传递函数为:
$H_{b}(s)=\frac{1}{1+\frac{s^{2}}{\omega_{0}Qs+\omega_{0}^{2}}}$
其中,$\omega_{0}$为阻带中心频率,$Q$为品质因数,根据题目要求,$\omega_{0}=0.3\pi$,$Q=10$。
2. 进行双线性变换。
将模拟滤波器的传递函数进行双线性变换,得到数字滤波器的传递函数:
$H(z)=\frac{b_{0}+b_{1}z^{-1}+b_{2}z^{-2}}{1+a_{1}z^{-1}+a_{2}z^{-2}}$
其中,
$b_{0}=b_{2}=\frac{\omega_{0}^{2}}{1+\omega_{0}/Q+\omega_{0}^{2}}$
$b_{1}=-2b_{0}$
$a_{1}=2(\omega_{0}^{2}-1)/(1+\omega_{0}/Q+\omega_{0}^{2})$
$a_{2}=(1-\omega_{0}/Q+\omega_{0}^{2})/(1+\omega_{0}/Q+\omega_{0}^{2})$
3. 根据频率范围调整数字滤波器的系数。
根据双线性变换的公式:
$s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}$
其中,$T$为采样周期,$T=1/f_{s}$,$f_{s}$为采样频率。将$s$代入数字滤波器的传递函数中,得到数字滤波器的幅频特性:
$H(f)=\frac{b_{0}(1+2cos(\omega T)+cos(2\omega T))+b_{1}(2cos(\omega T)-2)+b_{2}(1-2cos(\omega T)+cos(2\omega T))}{1+a_{1}(2cos(\omega T))+a_{2}(1-2cos(\omega T)+cos(2\omega T))}$
其中,$\omega=2\pi f/f_{s}$。
根据题目要求,通带范围为$0.25\pi\leq\omega\leq0.45\pi$,阻带范围为$0\leq\omega\leq0.15\pi$和$0.55\pi\leq\omega\leq\pi$。将这些频率代入数字滤波器的幅频特性中,调整数字滤波器的系数,使其满足要求。
4. 绘制幅频和相频特性曲线。
利用MATLAB绘制数字滤波器的幅频和相频特性曲线,代码如下:
```matlab
fs = 1000; %采样频率
T = 1/fs; %采样周期
w = linspace(0,pi,1000); %频率范围
f = w/pi*fs/2; %换算成实际频率
%数字滤波器系数
b0 = 0.0673;
b1 = -0.1346;
b2 = 0.0673;
a1 = -1.1430;
a2 = 0.4128;
%计算数字滤波器的幅频和相频特性
H = (b0*(1+2*cos(w*T)+cos(2*w*T))+b1*(2*cos(w*T)-2)+b2*(1-2*cos(w*T)+cos(2*w*T)))./(1+a1*(2*cos(w*T))+a2*(1-2*cos(w*T)+cos(2*w*T)));
phi = -angle((b0+b1*exp(-1i*w*T)+b2*exp(-2i*w*T))./(1+a1*exp(-1i*w*T)+a2*exp(-2i*w*T)));
%绘制幅频特性曲线
subplot(2,1,1);
plot(f,20*log10(abs(H)));
title('幅频特性曲线');
xlabel('频率(Hz)');
ylabel('幅值(dB)');
xlim([0,fs/2]);
ylim([-50,5]);
grid on;
%绘制相频特性曲线
subplot(2,1,2);
plot(f,phi/pi*180);
title('相频特性曲线');
xlabel('频率(Hz)');
ylabel('相位(度)');
xlim([0,fs/2]);
ylim([-180,180]);
grid on;
```
运行结果如下图所示:
![result](https://i.loli.net/2021/12/02/7fZc2JxNzrFyY5t.png)
阅读全文