濾波器設計是一個創建滿足指定濾波要求的濾波器參數的過程。濾波器的實現包括濾波器結構的選擇和濾波器參數的計算。只有完成了濾波器的設計和實現,才能最終完成數據的濾波。
濾波器設計的目標是實現數據序列的頻率成分變更。嚴格的設計規格需要指定通帶波紋數、阻帶衰減、過渡帶寬度等。更準確的指定可能需要實現最小階數的濾波器、需要實現任意形狀的濾波器形狀或者需要用fir濾波器實現。指定的要求不同,濾波器的設計也不同。
Matlab的信號處理工具箱軟件提供了兩種方式設計濾波器:面向對象的和非面向對象的。面向對象的方法首先創建一個濾波器對象fdesign,然後調用合適的design參數設計。如實現一個5階的低通巴特沃斯濾波器,3dB截止頻率爲200Hz,採樣頻率1000Hz,代碼如下
Fs=1000; %Sampling Frequency
time = 0:(1/Fs):1; %time vector
% Data vector
x = cos(2*pi*60*time)+sin(2*pi*120*time)+randn(size(time));
d=fdesign.lowpass('N,F3dB',5,200,Fs); %lowpass filter specification object
% Invoke Butterworth design method
Hd=design(d,'butter');
y=filter(Hd,x);
非面向對象的方法則適用函數實現濾波器設計,如butter、firpm。所有非面向對象的濾波器設計函數使用的是歸一化頻率,歸一化頻率[0, 1]之間,1表示πrad。將Hz頻率轉化爲歸一化頻率的方法爲乘以2除以採樣頻率。設計上面同樣的濾波器,使用非面向對象的方法如下
Wn = (2*200)/1000; %Convert 3-dB frequency
% to normalized frequency: 0.4*pi rad/sample
[B,A] = butter(5,Wn,'low');
y = filter(B,A,x);
濾波函數
* filter:利用遞歸濾波器(IIR)或非遞歸濾波器(FIR)對數據進行數字濾波;
* fftfilt:利用基於FFT的重疊相加法對數據進行濾波,只適用於非遞歸濾波器(FIR);
* filter2:二維FIR數字濾波;
* filtfilt:零相位濾波(IIR與FIR均可)。
濾波器特性分析
* 脈衝響應Impz
等價於使用函數filter輸入一個脈衝信號x=[1;zero(N-1,1)]。
* 頻率響應freqz與freqs
Freqz:求解數字濾波器的頻率響應
Freqs:求解模擬濾波器的頻率響應
* 幅頻和相頻abs與angle、unwrap
Unwrap:解卷繞
* 羣延遲grpdelay
羣延遲即爲濾波器相位響應的負一階導數,是濾波器平均延遲的度量。
* 零極點分析zplane
IIR數字濾波器設計
模擬低通濾波器設計
* 巴特沃斯低通濾波器設計buttap
* 切比雪夫低通濾波器設計cheb1ap與cheb2ap
* 橢圓低通濾波器設計ellipap
模擬濾波器最小階數的選擇
* 巴特沃斯濾波器Buttord
* 切比雪夫1型濾波器Cheb1ord
* 切比雪夫2型濾波器Cheb2ord
* 橢圓濾波器Ellipord
模擬高通、帶通、帶阻濾波器設計
* 模擬低通到模擬低通lp2lp
* 模擬低通到模擬高通lp2hp
* 模擬低通到模擬帶通lp2bp
* 模擬低通到模擬帶阻lp2bs
IIR實頻變換
* IIR實頻率移位變換iirshift
* 實低通到實低通的頻率移位變換iirlp2lp
* 實低通到實高通的頻率移位變換iirlp2hp
* 實低通到實帶通的頻率移位變換iirlp2bp
* 實低通到實帶阻的頻率移位變換iirlp2bs
* 實低通到實多帶的頻率移位變換iirlp2mb
* 實低通到實多點的頻率移位變換iirlp2xn
IIR複頻變換
* IIR複頻率移位變換iirshiftc
* 實低通到復帶通的頻率移位變換iirlp2bpc
* 實低通到復帶阻的頻率移位變換iirlp2bsc
* 實低通到復多帶的頻率移位變換iirlp2mbc
* 實低通到復多點的頻率移位變換iirlp2xnc
* 復帶通到復帶通的頻率移位變換iirbpc2bpc
模擬濾波器的離散化
* 脈衝響應不變法impinvar
* 雙線性變換法bilinear
IIR濾波器的直接設計
* 貝塞爾模擬濾波器Besself
* 巴特沃斯濾波器Butter
* 切比雪夫1型濾波器Cheby1
* 切比雪夫2型濾波器Cheby2
* 橢圓型濾波器Ellip
* 遞歸數字濾波器Yulewalk
使用最小二乘法擬合頻率響應函數。
* 一般數字濾波器Maxplat
小結
相對於FIR濾波器,IIR濾波器的主要優點在於它以比FIR更小的階數滿足指定的濾波要求。雖然IIR濾波器有非線性的相位,但matlab軟件中的數據處理方式是離散的,即全部數據序列被用於濾波。這允許了零相位濾波方法存在,可以使用函數filtfilt函數實現,它可以消除IIR濾波器的非線性相位偏移。
IIR濾波方法小結
濾波方法 |
描述 |
濾波器函數 |
模擬原型 |
使用連續域的經典低通原型濾波器模型零極點,再通過頻率變換和濾波器離散化得到數字濾波器 |
直接濾波器設計函數: besself,butter,cheby1, cheby2, ellip 階數預測函數: buttord, cheb1ord, cheb2ord, ellipord 低通模擬原型函數: besselap, buttap, cheb1ap, cheb2ap, ellipap 頻率變換函數: lp2bp, lp2bs, lp2hp, lp2lp 濾波器離散函數: bilinear, impinvar |
直接設計 |
通過逼近線性幅值響應直接在離散域設計數字濾波器 |
yulewalk |
廣義巴特沃斯濾波器設計 |
設計零點多於極點的低通巴特沃斯濾波器 |
maxflat |
參數建模 |
通過逼近給定的時域或頻域響應得到數字濾波器 |
時域建模函數: lpc, prony, stmcb 頻域建模函數: invfreqs, invfreqz |
FIR數字濾波器設計
窗函數法
* 設計具有標準頻率響應的FIR濾波器Fir1
* 設計具有任意頻率響應的FIR濾波器Fir2(如多帶通濾波器)
使用凱塞窗時可以使用kaiserord函數設計FIR參數
切比雪夫逼近法
* 最佳一致逼近法設計firpm
估計最佳一致逼近法濾波器的階次firpmord
* 任意響應法cfirpm
約束最小二乘法
* 設計線性相位濾波器firls
* 設計多帶線性相位濾波器fircls
* 設計低通或高通線性相位濾波器fircls1
設計Savitzky-Golay平滑濾波器sgolay
小結
FIR濾波器有如下主要優點:
* 準確線性相位
* 總是穩定的
* 設計方法是線性的
* 可以有效的在硬件上實現
* 濾波初始過渡階段持續時間有限
它的主要缺點是它需要比IIR更高的階數來實現給定的響應,相應的,它的濾波器延遲也比IIR的大。
FIR濾波方法小結:
濾波器設計方法 |
描述 |
濾波器函數 |
窗函數設計法 |
對傅里葉逆變換加窗 |
fir1, fir2, kaiserord |
多帶逼近 |
最小二乘法一致逼近多帶頻率響應 |
firls, firpm, firpmord |
約束最小二乘法 |
在最大誤差的約束下最小化誤差平方和 |
fircls, fircls1 |
任意響應 |
任意響應設計,包括非線性相位、複頻域濾波器 |
cfirpm |
Raised Cosine |
平滑正弦過渡的低通響應 |
firrcos |
工具箱GUI
Sptool信號分析工具箱GUI
Wintool窗函數查看工具箱GUI