屈宏峰 于津 羅一平



摘 要:窗函數的設計,通過快傅立葉變化加窗的原理設計高精度的窗函數,并以此寫出可實際使用matlab代碼用于計算,對數字信號進行仿真,對比傳統窗函數和新設計的窗函數的實際效果。
關鍵詞:窗函數的設計,matlab代碼,傅里葉變化
引言
現在,隨著數字技術的發展,數字化接收機的普及,在對數字信號的處理上主要的數學工具是傅立葉變化,再對有限長度的數據信號進行傅立葉變化的時候,信號頻譜會產生頻譜能量泄露使信號頻譜產生畸變,為了減少頻譜能量泄露,可采用不同的截取函數對信號進行截斷,截斷函數稱為窗函數,簡稱為窗。
不同的窗函數根據設計的不同對信號頻譜的影響是不一樣的,經典的窗函數有矩形窗(rectwin),布萊克曼窗(blackmanwin)等。但經典窗函數已經越來越不適應現代信號處理對頻譜精度的需求,急需設計一款高辨識,高精度的數字窗。
一、窗函數的設計方法
(一)幾種窗函數的特征
矩形窗:矩形窗屬于時間變量的零次冪窗。矩形窗使用最多,習慣上不加窗就是使信號通過了矩形窗,這種窗的優點是主瓣比較集中,缺點是旁瓣高,并有負旁瓣,導致變化中帶進了高頻干擾和泄露,以下是矩形窗的頻響圖:
布萊克曼窗:布萊克曼窗是二階升余弦窗,主瓣寬,旁瓣比較低,但等效噪聲帶寬比漢寧窗大一點,是現在最常用的窗函數,這種窗的優點是旁瓣比較低,缺點是主瓣信號帶不平,以下是布萊克曼窗的頻響圖:
(二)利用FIR濾波器設計窗函數
根據上文的介紹和說明,可以看到,對于信號頻譜來說最合適的窗函數應該是主瓣窄,旁瓣低,即能保證不會產生大量的虛假旁瓣信號,又要保證主瓣的頻率準確度和幅度準確度。
通過對窗函數的了解,本文闡述一種通過使用matlab FIR濾波器設計方法自行設計的窗函數。以下是matlab 代碼:
%FIR窗函數設計%%%%%%%%%%%
clc;close all;clear all;
N=1024;
Fs=1024;%采樣率
f1=0.5;
f2=f1+Fs/N*5.5;
f=[0 2*f1/Fs 2*f2/Fs 1];
m=[1 1 0 0];
w=[1 150];
W1=remez(N–1,f,m,w);
W1=W1/max(W1);
f=linspace(–pi,pi,20000);
[Hz1,w0]=freqz(W1,1,f);
pp1=20*log10(abs(Hz1/max(Hz1)));
figure(1);
subplot(3,1,1);plot(f*256,pp1);axis([–50,50,–150,0]);title(‘firwin‘);
以下是FIR窗頻響圖:
(三)仿真對比
在matlab 中的對矩形窗,FIR窗,布萊克曼窗進行仿真測試,對一塊截斷信號進行加窗測試,得出的信號頻譜如下:
可以看出加矩形窗的信號頻譜旁瓣信號極多,完全影響了頻譜的信號識別,FIR窗和布萊克窗都將信號旁瓣抑制的很好,但相比之下,FIR窗的主信號更加細準確度更高。
二、結論
本文通過對信號頻譜加窗的原理分析結合實際使用情況,使用matlab軟件設計了一款可實際使用的窗函數,從對比結果來看,所設計的窗函數并不遜色于現在常用的經典窗函數在某些地方還要更加優秀,表明用該方法設計窗函數是可行的算法具有簡單、易于修改的優點,便于程序的實現。
參考文獻
[1]陳后金.數字信號處理(第2版)[M].北京:高等教育出版社,2008.
[2]吳大正.信號與線性系統分析(第4版)[M].北京:高等教育出版社,2005.
[3]張志涌,楊祖櫻. MATLAB 教程[M].北京:北京航空航天大學出版社,2015.