利用 SCILAB 设计 iir 滤波器设计(模拟滤波器双线性变换法)

IIR 滤波器的设计方法有很多种,一种比较简单的方法是先设计对应的模拟滤波器,然后将模拟滤波器转换为对应的数字滤波器。模拟滤波器到数字滤波器的转换最常见的方法是双线性变换法。下面就介绍一下怎么利用SCILAB提供的函数利用这种方法设计一个IIR 滤波器。

 

hz=iir(n,ftype,fdesign,frq,delta)

[p,z,g]=iir(n,ftype,fdesign,frq,delta)

Arguments

N : 滤波器的阶数

Ftype 滤波器的类型,’lp’ 表示低通,'hp' 表示高通,'bp' 表示带通,'sb' 表示带阻。

Fdesign:指定模拟滤波器的类型,可以为 'butt', 'cheb1', 'cheb2' 'ellip'

Frq: 长度为2的向量,指定滤波器的截止频率,这里的频率为归一化的频率,采样频率归一化为1。对于低通和高通滤波器,只有第一个参数有用,带通和带阻滤波器这两个截止频率都要用到。

 

Delta:长度为2的向量,对于cheb1型滤波器,只有第一个参数有用, 对于cheb2 型滤波器,只用到第二个参数,ellip 滤波器这两个参数都用到了 0

cheb1 型滤波器:1-delta(1),限定了通带的波动

cheb2 型滤波器: 0,限定了阻带的波动

ellip 型滤波器:

在通带,1-delta(1)

在阻带,0

 

Hz:计算出的系统函数

P:给出了滤波器的各个零点

z:给出了滤波器的各个极点

G:增益

 

下面给个具体的例子:

hz=iir(3,'bp','ellip',[.15 .25],[.08 .03]);

 

这个例子设计的是一个 阶带通椭圆滤波器。通带截止频率为 0.15 和 0.25,通带允许波动为 0.08, 阻带允许波动为 0.03

 

计算出的滤波器传递函数为:

利用 SCILAB 设计 iir 滤波器设计(模拟滤波器双线性变换法)_第1张图片

下面画出频响曲线:

[hzm,fr]=frmag(hz,256);

plot2d(fr',hzm')

xtitle('Discrete IIR filter band pass  0.15 < fr < 0.25 ',' ',' ');

利用 SCILAB 设计 iir 滤波器设计(模拟滤波器双线性变换法)_第2张图片

如果我们需要零极点信息的话,可以这样计算:

[p,z,g]=iir(3,'bp','ellip',[.15 .25],[.08 .03]);

 

给出的是零点的位置,q是极点位置:

z  =

 

    0.7632657 + 0.6460848i  

    0.7632657 - 0.6460848i  

    1.                      

  - 0.3182662 - 0.9480014i  

  - 0.3182662 + 0.9480014i  

  - 1.                      

 

 

p  =

 

    0.5561319 - 0.7583880i  

    0.5561319 + 0.7583880i  

    0.2703756 + 0.7688681i  

  - 0.0034896 + 0.9267011i  

  - 0.0034896 - 0.9267011i  

    0.2703756 - 0.7688681i 


你可能感兴趣的:(数学软件,开源数学软件)