Matlab濾波器設計

濾波器設計是一個創建滿足指定濾波要求的濾波器參數的過程。濾波器的實現包括濾波器結構的選擇和濾波器參數的計算。只有完成了濾波器的設計和實現,才能最終完成數據的濾波。

濾波器設計的目標是實現數據序列的頻率成分變更。嚴格的設計規格需要指定通帶波紋數、阻帶衰減、過渡帶寬度等。更準確的指定可能需要實現最小階數的濾波器、需要實現任意形狀的濾波器形狀或者需要用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章