理論上說,設計FIR濾波器是很簡單的,給定一個期望的頻率響應H(ω),對其進行傅里葉反變換就可以得到FIR濾波器的離散單位沖擊響應。
?
實際使用中的問題是,這樣得到的許多濾波器的濾波器階數都是無窮的而且得到的濾波器不一定是因果系統。
比如理想低通濾波器,截止頻率為ωc
?
計算得到的濾波器系數為:
?
一種簡單的辦法是將這個序列中間的一部分截取出來。也就是對信號加一個矩形的窗函數。
?
當N?=?33?截止頻率ωc?=0.2時濾波器的頻率響應如下圖所示,其中實線是理想低通濾波器的響應曲線。加窗的結果是頻響曲線在通頻帶和阻帶都產生了波動,偏離理想低通濾波器頻響曲線最大的地方在ωc處。

除了用矩形窗函數,還可以采用其他形狀的窗函數,不同類型的窗函數有不同的特點。關于不同窗函數的特征請參見數字信號處理方面的教材,這里不多說了。
?
### wfir
[wft,wfm,fr]=wfir(ftype,forder,cfreq,wtype,fpar)
?
Ftype?表示濾波器的類型,可以為'lp','hp','bp','sb'
Forder?為濾波器的階數
Cfreq?為濾波器的轉折頻率,對于低通和高通濾波器來說提供一個截止頻率就行了,對于帶通和帶阻濾波器要提供2個轉折頻率。這里的頻率都是歸一化了的,采樣頻率被歸一化為1。
所以轉折頻率要小于?0.5。
Wtype?表示窗函數的類型,可以為?'re','tr','hm','hn','kr','ch'
Fpar?表示窗函數的參數,長度為2的數組,只對?Kaiser?窗?和Chebyshev?窗有效。
對?Kaiser?窗fpar(1)>0,?fpar(2)=0.
對Chebyshev?窗fpar(1)>0,?fpar(2)<0?或者?fpar(1)<0,?0<fpar(2)<.5
?
返回值:
Wft?為返回的濾波器系數
Wfm?為濾波器的頻響特性
Fr?為Wfm?對應的頻率點
?
下面舉一個具體的例子:
[h,hm,fr]=wfir("lp",33,[.2?0],"hm",[0?0]);
?
這個表示低通濾波器,33階,截止頻率0.2,hamming?窗
?
Plot(fr,hm);

窗函數法設計FIR濾波器器介紹這些也就差多不了,下次介紹頻率抽樣法。
- 前言
- gnuplot 中的數據平滑
- 利用 Maxima 求解常微分方程
- Maxima 的繪圖功能 1
- Maxima 的繪圖功能 2
- Maxima 的繪圖功能 3
- Maxima 矩陣及矢量運算 1
- Maxima 矩陣及矢量運算 3
- Maxima 矩陣及矢量運算 4
- maxima 學習筆記(coeff 函數的應用)
- maxima 代數表達式變換
- maxima 學習筆記(基本微積分)
- maxima 代數方程求解
- Maxima 中的復數運算
- Maxima 的三角函數化簡功能
- Maxima 的基本微積分操作
- 利用 gnuplot 繪制時間序列圖
- gnuplot 入門教程 1
- gnuplot 入門教程 2
- gnuplot 入門教程 3
- gnuplot 入門教程 4
- gnuplot 讀取逗號分隔的數據文件
- scilab 讀取處理 wav 文件
- scilab 讀取處理 wav 文件 (2)
- Scilab 處理聲音數據(補充)
- 利用 SCILAB 設計 FIR 濾波器(窗函數法)
- 利用 SCILAB 設計 FIR 濾波器(Minimax法)
- 利用 SCILAB 設計 iir 濾波器設計(模擬濾波器雙線性變換法)
- Scilab 的繪圖函數(1)
- Scilab 的繪圖函數(2)
- Scilab 的繪圖函數(3)
- Scilab 的繪圖函數(4)