基于MATLAB的IIR滤波器设计与实现

基于MATLAB的IIR滤波器设计与实现

  IIR滤波器的设计主要有经典设计法、直接设计法和最大平滑滤波器设计法三种方法。

  1、经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的模拟滤波器,然后再离散化为满足给定技术指标的数字滤波器。对应的工具函数由完全设计函数——butter、cheby1、cheby2、ellip、besself;阶数估计函数——buttord、cheb1ord、cheb2ord、ellipord;低通模拟原型滤波器函数——buttap、cheb1ap、cheb2ap、ellipap;频率转换函数——lp2lp、lp2bp、lp2bs;滤波器离散化函数——bilinear、impinvar。

  2、直接设计法是离散域内用最小二乘法逼近给定的幅频特性,对应的工具函数是yulewalk。

  3、最大平滑滤波器设计法是设计一般化低通滤波器,其零点数多于极点,对应的工具函数是maxflat。

分别用几个例子来说明三种方法的应用。

例一、经典法设计滤波器有脉冲响应不变法和双线性变换法两种方式。

  (1)、脉冲响应不变法

    用椭圆滤波器原型设计一个低通滤波器,满足wp=0.2pi、Rp=0.5dB、ws=0.3pi、As=20dB。代码如下:

 1 wp=0.2*pi;
 2 ws=0.3*pi;
 3 rp=0.5;
 4 rs=20;
 5 [n,wn]=ellipord(wp,ws,rp,rs,'s');
 6 [z,p,k]=ellipap(n,rp,rs);
 7 w=logspace(-1,1,1000);
 8 h=freqs(k*poly(z),poly(p),w);
 9 semilogx(w,abs(h));
10 grid;

  波形如下:

命令窗口可得:

n =
     3
wn =
    0.6283

 

  (2)、双线性变换法

    设计带通Chebyshev I型数字滤波器,要求通带边界频率为100~200Hz;通带纹波小于3dB;阻带衰减大于30dB;过渡带宽为30Hz;采样频率为1000Hz。代码如下:

1 fs=1000;
2 wp=[100 200]*2/fs;
3 ws=[30 300]*2/fs;
4 rp=3;
5 rs=30;
6 Nn=128;
7 [N,wn]=cheb1ord(wp,ws,rp,rs)
8 [b,a]=cheby1(N,rp,wn)
9 freqz(b,a,Nn,fs)

波形如下:

 

命令窗口可得:

N =
     3
wn =
    0.2000    0.4000
b =
    0.0066         0   -0.0198         0    0.0198         0   -0.0066
a =
    1.0000   -3.3130    6.1125   -6.9677    5.3979   -2.5753    0.6884

例二、用直接法设计一个多频带数字滤波器。

  幅频响应值f=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]; m=[0 0 1 1 0 0 1 1 1 0 0];

具体操作步骤:(1):计算与分子多项式相应的幅值平方响应的辅助分子式和分母式;(2):由辅助分子式和分母式计算完全的频率响应;(3):计算滤波器的脉冲响应;(4):采用最小二乘法拟合脉冲响应,最终求得滤波器的分子多项式。

代码如下:

 

 1 oder=10;
 2 f=0:0.1:1;
 3 m=[0 0 1 1 0 0 1 1 1 0 0];
 4 [b,a]=yulewalk(oder,f,m)
 5 [h,w]=freqz(b,a,128)
 6 axes('position',[0.2 0.2 0.4 0.4]);
 7 plot(f,m,'b-',w/pi,abs(h),'m--');
 8 xlabel('frequency(pi)');
 9 ylabel('magnitude');
10 title('direct IIR design-yulewalk');
11 legend('理想图形','实际图像');
12 grid;

 

波形如下:

 

命令窗口可得:

b =
  Columns 1 through 9
    0.2774   -0.0460   -0.0761    0.1262   -0.3949   -0.0783    0.1008   -0.0571    0.1488
  Columns 10 through 11
    0.0512    0.0270
a =
  Columns 1 through 9
    1.0000   -0.0185    0.4144    0.0393    0.3588    0.1016    0.2372   -0.0633    0.1727
  Columns 10 through 11
    0.0629    0.0496
h =
   0.0335 + 0.0000i   0.0325 - 0.0013i   0.0295 - 0.0023i   0.0244 - 0.0029i   0.0173 - 0.0028i   0.0079 - 0.0018i
  -0.0036 + 0.0006i  -0.0175 + 0.0046i  -0.0338 + 0.0109i  -0.0525 + 0.0201i  -0.0736 + 0.0329i  -0.0970 + 0.0503i
  -0.1223 + 0.0735i  -0.1488 + 0.1038i  -0.1753 + 0.1429i  -0.1999 + 0.1925i  -0.2196 + 0.2539i  -0.2304 + 0.3281i
  -0.2270 + 0.4142i  -0.2034 + 0.5095i  -0.1545 + 0.6079i  -0.0773 + 0.7003i   0.0265 + 0.7762i   0.1505 + 0.8263i
   0.2845 + 0.8453i   0.4175 + 0.8333i   0.5410 + 0.7943i   0.6497 + 0.7347i   0.7417 + 0.6608i   0.8172 + 0.5776i
   0.8778 + 0.4886i   0.9250 + 0.3956i   0.9602 + 0.2995i   0.9837 + 0.2003i   0.9951 + 0.0978i   0.9931 - 0.0077i
   0.9754 - 0.1156i   0.9391 - 0.2233i   0.8818 - 0.3265i   0.8025 - 0.4191i   0.7033 - 0.4933i   0.5899 - 0.5422i
   0.4714 - 0.5620i   0.3580 - 0.5532i   0.2582 - 0.5209i   0.1767 - 0.4726i   0.1147 - 0.4161i   0.0703 - 0.3575i
   0.0406 - 0.3013i   0.0219 - 0.2498i   0.0112 - 0.2038i   0.0057 - 0.1636i   0.0035 - 0.1287i   0.0030 - 0.0984i
   0.0031 - 0.0720i   0.0031 - 0.0485i   0.0022 - 0.0273i   0.0002 - 0.0076i  -0.0033 + 0.0114i  -0.0085 + 0.0305i
  -0.0154 + 0.0506i   -0.0241 + 0.0725i   -0.0343 + 0.0972i  -0.0455 + 0.1259i  -0.0572 + 0.1597i  -0.0681 + 0.2001i
  -0.0763 + 0.2482i  -0.0793 + 0.3050i  -0.0737 + 0.3708i  -0.0550 + 0.4444i  -0.0190 + 0.5228i   0.0382 + 0.6005i
   0.1178 + 0.6698i   0.2173 + 0.7224i   0.3303 + 0.7512i   0.4478 + 0.7532i   0.5608 + 0.7295i   0.6624 + 0.6847i
   0.7487 + 0.6250i   0.8189 + 0.5562i   0.8740 + 0.4832i   0.9160 + 0.4091i   0.9470 + 0.3361i   0.9691 + 0.2652i
   0.9842 + 0.1968i   0.9936 + 0.1308i   0.9983 + 0.0670i   0.9992 + 0.0051i   0.9967 - 0.0555i   0.9910 - 0.1151i
   0.9824 - 0.1743i   0.9707 - 0.2336i   0.9557 - 0.2933i   0.9367 - 0.3540i   0.9131 - 0.4158i   0.8840 - 0.4790i
   0.8480 - 0.5434i   0.8036 - 0.6086i   0.7489 - 0.6734i   0.6820 - 0.7360i   0.6013 - 0.7932i   0.5059 - 0.8407i
   0.3965 - 0.8730i   0.2765 - 0.8842i   0.1522 - 0.8694i   0.0326 - 0.8265i  -0.0728 - 0.7579i  -0.1561 - 0.6700i
  -0.2133 - 0.5720i  -0.2448 - 0.4730i  -0.2543 - 0.3803i  -0.2472 - 0.2983i  -0.2288 - 0.2289i  -0.2037 - 0.1719i
  -0.1755 - 0.1263i  -0.1464 - 0.0905i  -0.1182 - 0.0630i  -0.0917 - 0.0420i  -0.0675 - 0.0264i  -0.0458 - 0.0151i
  -0.0267 - 0.0071i  -0.0102 - 0.0017i   0.0039 + 0.0017i   0.0156 + 0.0034i   0.0249 + 0.0040i   0.0321 + 0.0037i
   0.0372 + 0.0028i   0.0402 + 0.0015i

(因系数w的数据太多,不予给出)

 

例三、用maxflat函数设计一个通用Butter-worth低通滤波器,满足系统函数分子阶数为8阶,系统函数分母阶数为3阶,截止频率为1pi。代码如下:

1 nb=8;
2 na=3;
3 wn=0.6;
4 [b,a]=maxflat(nb,na,wn,'plots')
5 maxflat(nb,na,wn,'trace')

波形如下:

命令窗口可得:

b =
    0.1650    0.5048    0.4100   -0.1134   -0.2329   -0.0244    0.0202   -0.0043    0.0004
a =
    1.0000   -0.1813    0.2073   -0.3006
 Table:
    L         M         N         wo_min/pi wo_max/pi
 
    8.0000         0    3.0000         0    0.2919
    7.0000    1.0000    3.0000    0.2919    0.4021
    6.0000    2.0000    3.0000    0.4021    0.5000
    5.0000    3.0000    3.0000    0.5000    0.5979
    4.0000    4.0000    3.0000    0.5979    0.7081
    3.0000    5.0000    3.0000    0.7081    1.0000
ans =
    0.1650    0.5048    0.4100   -0.1134   -0.2329   -0.0244    0.0202   -0.0043    0.0004

另:在寻找FIR滤波器设计与实现时找到sunev博主的一篇博文,推荐下《基于MATLAB的FIR滤波器设计与实现》

 

转载于:https://www.cnblogs.com/clairvoyant/p/4734311.html

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值