MATLAB中FIR濾波器如何設計

題目:

MATLAB中FIR濾波器如何設計

解答:

一般濾波的要求主要是通帶邊界頻率、阻帶邊界頻率、通帶最大波紋及阻帶最小衰減.
而由FIR濾波器的窗函數基本參數,可以知道,最小阻帶衰減只由窗形狀決定,不受窗寬N的影響;而過渡帶的寬度則既與窗形狀有關,且隨窗寬N的增加而減小.
這樣的話,設計一個FIR濾波器,主要是由阻帶最小衰減來確定窗形狀,再根據過渡帶寬的要求來確定窗寬N.有一個窗函數基本參數表,可以對照著選.然後用MATLAB中fir1函數來設計,其語法格式爲:b=fir1(N,wn,'ftype',window).需簡單計算N,wn
例題:
設計一個低通數字濾波器,給定抽樣頻率爲fs=5000Hz,通帶截止頻率wp=500Hz,阻帶起始頻率ws=800Hz,阻帶衰減不小於-50dB.
由於阻帶衰減爲50dB,查表,可選海明窗,其阻帶最小衰減爲53dB,過渡帶寬度爲6.6π/N.
MATLAB程序如下:
wp=500*2/5000;% 頻率歸一化
ws=800*2/5000;
wdel=ws-wp;% 過渡帶寬
wn=0.5*(wp+ws);% 近似計算截止頻率
N=ceil(6.6*pi/wdel);% 根據過渡帶寬度求濾波器階數
window=hamming(N+1);% 海明窗
b=fir1(N,wn,window);% FIR濾波器設計
freqz(b,1,512);% 查看濾波器幅頻及相頻特性
再問: 非常感謝,你寫的比較清楚。那這個通帶最大波紋怎麼選啊?不能像IIR濾波器那樣根據給定的通帶波紋設計麼?
再答: 一般來說窗函數選定了後,N增加只會減小過渡帶寬,而不會改變肩峯的相對值,這就是Gibbs效應。對於矩形窗情況下,最大相對肩峯總是保持8.95%不變,對於其他窗,第一旁瓣相對主瓣的幅度衰減也是常數。 因此,在窗函數設計FIR濾波器中,通帶最大波紋就不是那麼重要了。要查看通帶最大波紋,可以加一段話: omega=linspace(0,wp,500); h=freqz(b,1,omega);% 計算在通帶內的幅頻 Rp=20*log10(max(abs(h))/min(abs(h))) % 計算通帶最大波紋 另外,除了fir1用窗函數設計,還有fir2函數,對應的是頻率抽樣法設計FIR濾波器,可以查看相應的。

添加新評論

暱稱
郵箱
網站