利用 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<delta(1),delta(2)<1

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

cheb2 型滤波器: 0<ripple<delta(2) ,限定了阻带的波动

ellip 型滤波器:

在通带,1-delta(1)<ripple<1 

在阻带,0<ripple<delta(2) 

 

Hz:计算出的系统函数

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

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

G:增益

 

下面给个具体的例子:

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

 

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

 

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

下面画出频响曲线:

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

plot2d(fr',hzm')

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

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

[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 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值