資源簡介
程序中以凱瑟窗作為窗口分別設計實現了各類濾波器(低通、帶通、高通、帶阻、雙帶通等),其中使用kaiserord函數設計fir濾波器的估算參數、kaiser函數生成凱瑟窗、fir1函數生成濾波器,并繪制出了各種濾波器的頻率響應特性。備注對以上函數及涉及的參數進行了說明。
代碼片段和文件信息
clearclcclose?all
%?加窗的優勢:加窗可以有效的減少頻譜泄露
%?基于窗函數的FIR濾波器設計;
%?(1)?根據對阻帶衰減以及過渡帶的指標要求,選擇窗函數類型(有:矩形窗、三角窗、漢寧窗、哈明窗、凱塞窗等),并估計窗口長度N。
%?????先按照阻帶衰減選擇窗函數類型。在保證阻帶衰減滿足要求的情況下,盡量選擇主瓣集中的窗函數。
%?(2)?構造希望逼近的頻率響應函數
%?(3)?計算h(n),有限長序列
%?(4)?加窗得到設計結果
N=1024;?????????%?采樣點數
fsamp?=?8000;???%?采樣頻率
%%?Kaiser窗口低通濾波器設計
fcuts?=?[1000?1500];???????????????????????????????????%?低通,4個參數(結合mags來看):表示(01000)區間內通,(10001500)過度,(1500fs/2)內阻;
mags?=?[1?0];??????????????????????????????????????????%?1/0表示通/阻
devs?=?[0.05?0.01];????????????????????????????????????%?表示各區段內紋波的波動;
[nwnbetaftype]?=?kaiserord(fcutsmagsdevsfsamp);??%?Kaiser窗口FIR濾波器設計估算參數
window=kaiser(n+1beta);???????????????????????????????%?時域序列在時域圖像上加窗而在頻域上就是卷積了;
hh?=?fir1(nwnftypewindow‘noscale‘);????????????????%?fir1用來生成濾波器hh表示n階濾波器多項式的系數noscale表示不歸一化濾波器的幅度響應;
[Hf]?=?freqz(hh11024fsamp);
figureplot(fabs(H))title(sprintf(‘n=%d階Kaiser窗口低通濾波器的頻率響應‘n))xlabel(‘頻率/Hz‘)ylabel(‘幅度‘);
grid?on;
%%?Kaiser窗口帶通濾波器設計
fcuts?=?[1000?1300?2210?2410];????????????????????????%?帶通,7個參數(結合mags來看):表示(01000)區間內阻,(10001300)過度,(13002210)通(22102410)過度(2410fs/2)內阻;
mags?=?[0?1?0];
devs?=?[0.01?0.05?0.01];
[nwnbetaftype]?=?kaiserord(fcutsmagsdevsfsamp);
window=kaiser(n+1beta);
hh?=?fir1(nwnftypewindow‘noscale‘);
[Hf]?=?freqz(hh11024fsamp);
figureplot(fabs(H))ti
- 上一篇:電動汽車充電站選址定容matlab程序
- 下一篇:基本的遺傳算法MATLAB實現
評論
共有 條評論