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