Matlab中的階數估計函數
在MATLAB中,使用firpmord
函數可以估算等波紋FIR濾波器的最小階數。該方法基于Parks-McClellan算法,通過通帶和阻帶的頻率邊界、幅度響應及允許的最大誤差來自動計算參數。
rp = 3; % Passband ripple in dB
rs = 40; % Stopband ripple in dB
fs = 2000; % Sampling frequency
f = [500 600]; % Cutoff frequencies
a = [1 0]; % Desired amplitudes
dev = [(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)];
[n,fo,ao,w] = firpmord(f,a,dev,fs);
b = firpm(n,fo,ao,w);
freqz(b,1,1024,fs)
title('Lowpass Filter Designed to Specifications')
- 輸入參數:
f
(頻率邊界),a
(幅度),dev
(誤差),fs
(采樣頻率,可選) - 輸出參數:
n
(估算的階數),fo
(歸一化頻率邊界),ao
(幅度響應),w
(加權系數)
階數估計公式
對于給定的通帶波紋大小xdB,阻帶衰減
注意,上述幾個值不是獨立得,任意4個值就能確定5個。用于預測所需濾波器長度的公式清楚地表明了這一點。Kaiser開發了以下近似關系來估計滿足規范的濾波器長度:
N ≈ ? 20 log ? 10 ( δ p δ s ) ? 13 14.6 Δ F + 1 N \approx \frac{-20\log_{10}(\sqrt{\delta_p\delta_s})-13}{14.6\Delta F}+1 N≈14.6ΔF?20log10?(δp?δs??)?13?+1
其中 Δ F = ( ω s ? ω p ) / ( 2 π ) \begin{aligned}\Delta F = (\omega_s - \omega_p) / (2\pi)\end{aligned} ΔF=(ωs??ωp?)/(2π)?,即過渡帶帶寬。Herrmann等人[3]給出了一個更準確的公式
N ≈ D ∞ ( δ p , δ s ) ? f ( δ p , δ s ) ( Δ F ) 2 Δ F + 1 N \approx \frac{D_{\infty}(\delta_p, \delta_s) - f(\delta_p, \delta_s)(\Delta F)^2}{\Delta F} + 1 N≈ΔFD∞?(δp?,δs?)?f(δp?,δs?)(ΔF)2?+1
其中:
D ∞ ( δ p , δ s ) = ( 0.005309 ( log ? 10 δ p ) 2 + 0.07114 log ? 10 δ p ? 0.4761 ) log ? 10 δ s ? ( 0.00266 ( log ? 10 δ p ) 2 + 0.5941 log ? 10 δ p + 0.4278 ) , \begin{aligned}\\D_{\infty}(\delta_p, \delta_s) &= (0.005309 (\log_{10} \delta_p)^2 + 0.07114 \log_{10} \delta_p - 0.4761) \log_{10} \delta_s \\\\&- (0.00266 (\log_{10} \delta_p)^2 + 0.5941 \log_{10} \delta_p + 0.4278),\\\end{aligned} D∞?(δp?,δs?)?=(0.005309(log10?δp?)2+0.07114log10?δp??0.4761)log10?δs??(0.00266(log10?δp?)2+0.5941log10?δp?+0.4278),?
f ( δ p , δ s ) = 11.01217 + 0.51244 ( log ? 10 δ p ? log ? 10 δ s ) f(\delta_{p},\delta_{s})=11.01217+0.51244(\log_{10}\delta_{p}-\log_{10}\delta_{s}) f(δp?,δs?)=11.01217+0.51244(log10?δp??log10?δs?)
這些公式假設δs<δp。否則,必須交換δp和δs。該公式在信號處理工具箱中的Matlab函數中實現。
請注意,上述估計公式都表明濾波器長度N和過渡寬度?F成反比(對于(16),當 Δ F \Delta F ΔF變為0時)。這與最大平坦對稱濾波器(maximally flat symmetric filters)的對應關系形成鮮明對比。對于具有固定δp和δs的等波紋濾波器,?F減小為1/N;而對于最大平坦濾波器,?F減小為 1 / N 1/\sqrt{N} 1/N?。
參考文獻
- remez講座:https://eeweb.engineering.nyu.edu/iselesni/EL713/remez/remez.pdf
- matlab函數(firpmord)說明:https://ww2.mathworks.cn/help/signal/ref/firpmord.html
- Python scipy庫文檔:https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.remez.html
- O. Herrmann, L. R. Rabiner, and D. S. K. Chan. Practical design rules for optimum finite impulse response lowpass digital filters. The Bell System Technical Journal, 52:769–799, 1973.