学习学习!
原文地址:5 IIR数字滤波器设计与滤波作者:barbara_chou 典型的模拟低通滤波器的指标有两种方法: 第一种:Ωp,Ωs分别为通带频率和阻带频率,δp,δs分别为通带容限和阻带容限(峰波纹值)。 其中,在通带内要求1-δp<=|Ha(jΩ)|<=1。 有时候指标也可以这样表示:用通带最大衰减 αp 和阻带最小衰减 αs表示,它们的单位是dB:它的定义为αp=-20lg(1-δp);αs=-20lg(δs)。 第二种:用参数ε,A来表示,它们和δp,δs的关系是:ε=[(1-δp)^(-2)-1]^(0.5), A=1/δs。 我们要设计数字滤波器,总的归纳起来有以下步骤组成: 1,先根据指标,用函数得到滤波器的阶数和截止频率 2,根据所得到的阶数,用函数得到滤波器的零点,极点,增益因子 3,根据零点,极点,增益因子,用函数求得滤波器的传输函数的分子,分母系数。这时候我们得到的是模拟的低通滤波器。 4,根据需要,用以下函数把模拟低通滤波器转换成低通,高通,带通或带阻滤波器。 低通:[B,A]=lp2lp(b,a,Wo) 高通:[B,A]=lp2hp(b,a,Wo) 带通:[B,A]=lp2bp(b,a,Wo,Bw) 带阻:[B,A]=lp2bs(b,a,Wo,Bw) 到这已经差不多大功告成了,但是我们这时候求得的是s域上的,有实,虚轴。可是我们要的是数字滤波器,也是对离散信号进行滤波,于是我们就要把s域转换成z域。这时候我们就要用双线性变换了。 5,用双线性变换得到数字滤波器。在这里我们要注意,既然是双线性变换,我们在设计之前,应该先对频率进行预畸变:Ω=tan(w/2),这是数字频率和等效的模拟频率之间的映射关系。否则在这部的双线性变换是没有意义的。 %%1 设计低通数字滤波器,要求在通带内频带低于0.2pi rad 时,允许幅度误差在1dB以内,在频率0.3pi rad -pi rad 之间的阻带衰减大于15dB。用双线性设计数字滤波器,T=1,模拟滤波器采用巴特沃兹滤波器原型。 rp=1; rs=15; [hi,t]=impz(bz,az);%求出滤波器冲激响应 subplot(3,2,1);stem(t,hi); n=0:80; subplot(3,2,3);stem(n,x); 我们采用的是BUTTERWORTH低通滤波器,因为它模拟出来的滤波器比较理想。我们要注意双线性变换中[bz,az]=bilinear(bs,as,1/2);第三个参数。
[hi2,t2]=impz(bz2,az2); subplot(3,2,5);stem(t2,hi2); 关于总结: 1,我们在运用函数的时候,一定要注意各个参数的单位。比如上面的buttord求滤波器的阶数和截止频率,我们所用的指标的单位都是rad/s,dB。若给出的指标单位是Hz,我们就要根据数值对其进行相应的变换,如:Fp=100Hz,Fs=300Hz,则Ωp=2pi*Fp/1000,Ωs=2pi*Fs/1000,这是要注意的地方。 2,我们在滤波的时候,都是根据传输函数的分子,分母系数的一系列运算得到过滤出来的。所以我们设计一个滤波器,无非就是计算出这个滤波器的传输函数,而我们在MATLAB中的表达传输函数,就是用它的分子,分母系数来表达。 这份代码运行得到的图形是: |
|
来自: 败败0619 > 《Analog&Digital》