文章目录
概要
本文主要是为了验证一下滤波器零、极点对频响的具体影响。`
1. Matlab代码设计
matlab里面有自带的滤波器设计软件,设置参数就可以自动生成各种滤波器,不过我这里需要手动更改滤波器参数,所以用的命令行来实现。
代码如下所示,具体步骤为:
a)使用ellipord计算出滤波器阶数和截止频率(这一步可以省略,直接用第二步)
b)使用ellip命令计算出椭圆滤波器的极点、零点和增益(不同的滤波器命令不一样,具体可以查官方资料,比如切比雪夫1滤波器的命令是[z1,p1,k1] = cheby1(n,3,2pifc,“s”);)
c)使用zp2tf计算出传递函数的多项式系数
d)使用freqs计算出传递函数的频响
% 【例7-29】ellipord函数设计椭圆滤波器示例。
clc, clear, close all
Fp = 4e3;
Fs = 12e3;
Wp = 2*pi*Fp;
Ws = 2*pi*Fs;
rp = 3;
rs = 20; % 设计滤波器参数
[N, wc] = ellipord(Wp, Ws, rp, rs, 's'); % 计算滤波器阶数和阻带起始频率
[ze,pe,ke] = ellip(N,rp,rs,wc,"s");% 计算零点、极点、增益
% ze=[ 58870.5377192101i; - 58870.5377192101i];
% pe=[-7445.55073682723 + 20835.3687528983i;-7445.55073682723 - 20835.3687528983i];
% ke=0.1;
[be,ae] = zp2tf(ze,pe,ke); % 计算系统函数系数多项式
[he,we] = freqs(be,ae,4096); % 模拟滤波器的频率响应
figure
plot(we/(2e3*pi), mag2db(abs(he)),'k');
axis([0 20 -100 5])
xlabel("Frequency (kHz)")
ylabel("Attenuation

最低0.47元/天 解锁文章
767

被折叠的 条评论
为什么被折叠?



