Matlab數(shù)字濾波器設(shè)計(jì)實(shí)踐—FIR
1低通濾波器設(shè)定
在理想情況下,低通濾波器使信號(hào)中低于指定截止頻率 ωc 的所有頻率分量保持不變,并拒絕高于 ωc 的所有分量。由于實(shí)現(xiàn)理想低通濾波器所需的脈沖響應(yīng)是無(wú)限長(zhǎng)的,因此無(wú)法設(shè)計(jì)出理想的 FIR 低通濾波器。理想脈沖響應(yīng)的有限長(zhǎng)度逼近會(huì)導(dǎo)致濾波器的通帶 (ω《ωc) 和阻帶 (ω》ωc) 中都出現(xiàn)波紋,并導(dǎo)致通帶和阻帶之間的過(guò)渡帶寬度非零。
當(dāng)用有限脈沖響應(yīng)逼近時(shí),通帶/阻帶波紋和過(guò)渡帶寬度都是不希望出現(xiàn)的,且不可避免地與理想低通濾波器存在偏差。下圖說(shuō)明了這些偏差:
實(shí)際的 FIR 設(shè)計(jì)通常包括過(guò)渡帶寬度和最大通帶和阻帶波紋不超過(guò)允許值的濾波器。除了這些設(shè)計(jì)設(shè)定之外,還必須選擇濾波器階數(shù),它等效于選擇截?cái)嗟拿}沖響應(yīng)的長(zhǎng)度。
濾波器設(shè)計(jì)中的設(shè)計(jì)設(shè)定可形象地比喻為下圖所示的三角形,每個(gè)設(shè)定對(duì)應(yīng)其中一個(gè)角。
三角形相當(dāng)于選擇設(shè)計(jì)設(shè)定時(shí)可用的自由度。由于各角之和是固定值,因此最多只能選擇兩個(gè)設(shè)定的值。第三個(gè)設(shè)定將由特定設(shè)計(jì)算法確定。此外,就像三角形中的各角一樣,如果我們使一個(gè)設(shè)定更大/更小,它將影響其他一個(gè)或兩個(gè)設(shè)定。
FIR 濾波器廣受歡迎,因?yàn)樗鼈兎浅7€(wěn)定,并可以設(shè)計(jì)成具有線性相位的濾波器。盡管如此,這些濾波器仍可能有長(zhǎng)瞬時(shí)響應(yīng),在某些應(yīng)用中的計(jì)算成本可能很高。
2 最小階 FIR 設(shè)計(jì)
通過(guò)指定通帶和阻帶頻率以及通帶波紋和阻帶衰減,可以獲得最小階設(shè)計(jì)。然后,設(shè)計(jì)算法會(huì)選擇符合設(shè)定的最小濾波器長(zhǎng)度。
設(shè)計(jì)最小階低通 FIR 濾波器,其通帶頻率為 0.37pi 弧度/采樣點(diǎn),阻帶頻率為 0.43pi 弧度/采樣點(diǎn)(因此過(guò)渡帶寬度等于 0.06*pi 弧度/采樣點(diǎn)),通帶波紋為 1 dB,阻帶衰減為 30 dB。
Fpass = 0.37;
Fstop = 0.43;
Ap = 1;
Ast = 30;
d = designfilt(‘lowpassfir’,‘PassbandFrequency’,F(xiàn)pass,。..
‘StopbandFrequency’,F(xiàn)stop,‘PassbandRipple’,Ap,‘StopbandAttenuation’,Ast);
hfvt = fvtool(d);
可以使用 filtord 函數(shù)查詢(xún)生成的濾波器階數(shù)。
可以使用 filtord 函數(shù)查詢(xún)生成的濾波器階數(shù)。
N = filtord(d)
N = 39
可以使用 info 函數(shù)獲取用于設(shè)計(jì)濾波器的參數(shù)的有關(guān)信息
info(d)
默認(rèn)情況下,designfilt 函數(shù)會(huì)選擇一個(gè)等波紋設(shè)計(jì)算法。線性相位等波紋濾波器是令人滿(mǎn)意的,因?yàn)閷?duì)于給定階數(shù),這種濾波器與理想濾波器的最大可能偏差最小。
然而,請(qǐng)注意,也可以使用 Kaiser 窗獲得最小階設(shè)計(jì)。即使 Kaiser 窗方法對(duì)相同設(shè)定產(chǎn)生更大的濾波器階數(shù),當(dāng)設(shè)計(jì)設(shè)定非常嚴(yán)格時(shí),該算法的計(jì)算成本更低,并且不太可能出現(xiàn)收斂問(wèn)題。如果應(yīng)用需要非常窄的過(guò)渡帶寬度或非常大的阻帶衰減,就可能出現(xiàn)這種情況。
使用 Kaiser 窗方法設(shè)計(jì)與上述設(shè)定相同的濾波器,并將其響應(yīng)與等波紋濾波器進(jìn)行比較。
dk = designfilt(‘lowpassfir’,‘PassbandFrequency’,F(xiàn)pass,。..
‘StopbandFrequency’,F(xiàn)stop,‘PassbandRipple’,Ap,。..
‘StopbandAttenuation’,Ast, ‘DesignMethod’, ‘kaiserwin’);
addfilter(hfvt,dk);
legend(hfvt,‘Equiripple design’, ‘Kaiser window design’)
N = filtord(dk)
N = 52
3 以赫茲為單位指定頻率參數(shù)
如果知道濾波器工作將使用的采樣率,可以指定采樣率和頻率(以赫茲為單位)。重新設(shè)計(jì)采樣率為 2 kHz 的最小階等波紋濾波器。
Fpass = 370;
Fstop = 430;
Ap = 1;
Ast = 30;
Fs = 2000;
d = designfilt(‘lowpassfir’,‘PassbandFrequency’,F(xiàn)pass,。..
‘StopbandFrequency’,F(xiàn)stop,‘PassbandRipple’,Ap,。..
‘StopbandAttenuation’,Ast,‘SampleRate’,F(xiàn)s);
hfvt = fvtool(d);
4 固定階、固定過(guò)渡帶寬度
固定階設(shè)計(jì)適用于對(duì)計(jì)算負(fù)載敏感或?qū)V波器系數(shù)個(gè)數(shù)有限制的應(yīng)用。一種選擇是以控制通帶波紋/阻帶衰減為代價(jià)來(lái)固定過(guò)渡帶寬度。
假設(shè)一個(gè) 30 階低通 FIR 濾波器,其通帶頻率為 370 Hz,阻帶頻率為 430 Hz,采樣率為 2 kHz。對(duì)于這組特定設(shè)定,可使用兩種設(shè)計(jì)方法:等波紋法和最小二乘法。下面我們?yōu)槊糠N方法設(shè)計(jì)一個(gè)濾波器,并比較結(jié)果。
N = 30;
Fpass = 370;
Fstop = 430;
Fs = 2000;
% Design method defaults to ‘equiripple’ when omitted
deq = designfilt(‘lowpassfir’,‘FilterOrder’,N,‘PassbandFrequency’,F(xiàn)pass,。..
‘StopbandFrequency’,F(xiàn)stop,‘SampleRate’,F(xiàn)s);
dls = designfilt(‘lowpassfir’,‘FilterOrder’,N,‘PassbandFrequency’,F(xiàn)pass,。..
‘StopbandFrequency’,F(xiàn)stop,‘SampleRate’,F(xiàn)s,‘DesignMethod’,‘ls’);
hfvt = fvtool(deq,dls);
legend(hfvt,‘Equiripple design’, ‘Least-squares design’)
等波紋濾波器非常適合必須滿(mǎn)足特定容差的應(yīng)用,例如設(shè)計(jì)具有給定最小阻帶衰減或給定最大通帶波紋的濾波器。另一方面,如果我們想最小化通帶/阻帶中(理想濾波器和實(shí)際濾波器之間)的誤差能量,這些設(shè)計(jì)可能并不理想。
如果您要盡可能降低某個(gè)頻帶內(nèi)信號(hào)的能量,請(qǐng)使用最小二乘設(shè)計(jì)。
在上述示例中,設(shè)計(jì)的濾波器在通帶和阻帶中具有相同的波紋。我們可以使用權(quán)重來(lái)減少其中一個(gè)頻帶內(nèi)的波紋,同時(shí)保持濾波器階數(shù)固定。例如,如果您希望阻帶波紋是通帶波紋的十分之一,則為阻帶賦予的權(quán)重必須是通帶權(quán)重的十倍。根據(jù)上述情況重新設(shè)計(jì)等波紋濾波器。
deqw = designfilt(‘lowpassfir’,‘FilterOrder’,N,‘PassbandFrequency’,F(xiàn)pass,。..
‘StopbandFrequency’,F(xiàn)stop,‘SampleRate’,F(xiàn)s,。..
‘PassbandWeight’,1,‘StopbandWeight’,10);
hfvt = fvtool(deq,deqw);
legend(hfvt,‘Equiripple design’, ‘Equiripple design with weighted stopband’)
5 固定階、固定截止頻率
可以使用窗口設(shè)計(jì)方法設(shè)計(jì)具有固定濾波器階數(shù)和截止頻率的濾波器。
可以使用不同窗口來(lái)控制阻帶衰減,同時(shí)保持濾波器階數(shù)不變。
例如,假設(shè)有截止頻率為 60 Hz、采樣率為 1 kHz 的 100 階低通 FIR 濾波器。比較使用 Hamming 窗和使用旁瓣衰減為 90 dB 的 Chebyshev 窗產(chǎn)生的設(shè)計(jì)。
dhamming = designfilt(‘lowpassfir’,‘FilterOrder’,100,‘CutoffFrequency’,60,。..
‘SampleRate’,1000,‘Window’,‘hamming’);
dchebwin = designfilt(‘lowpassfir’,‘FilterOrder’,100,‘CutoffFrequency’,60,。..
‘SampleRate’,1000,‘Window’,{‘chebwin’,90});
hfvt = fvtool(dhamming,dchebwin);
legend(hfvt,‘Hamming window’, ‘Chebyshev window’)
可以通過(guò)其他方式指定具有固定階數(shù)的濾波器:固定截止頻率、通帶波紋和阻帶衰減;固定過(guò)渡帶寬度;以及固定半功率 (3dB) 頻率。
責(zé)任編輯:haq
-
matlab
+關(guān)注
關(guān)注
185文章
2976瀏覽量
230473 -
濾波器
+關(guān)注
關(guān)注
161文章
7817瀏覽量
178122
原文標(biāo)題:Matlab數(shù)字濾波器設(shè)計(jì)實(shí)踐—FIR
文章出處:【微信號(hào):bianpinquan,微信公眾號(hào):變頻圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論