基于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。代碼如下:
波形如下:
命令窗口可得:
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
總結
以上是生活随笔為你收集整理的基于MATLAB的IIR滤波器设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天津政府应急系统之GIS一张图(arcg
- 下一篇: tcp服务器客户端状态图