基於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濾波器設計與實現》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM