爲什麼要加漢明窗?什麼叫加窗?
在信號處理中,可以說加窗處理是一個必經的過程,因爲我們的計算機只能處理有限長度的信號,因此原始信號X(t)要以T(採樣時間)截斷,即有限化,成爲XT(t)後再進一步處理,這個過程序就是加窗處理,但什麼時候用什麼窗呢?這時我們就要對所需用到的函數窗做一定的瞭解。在平時,我們用得最多的是矩形窗,這個也很容易理解,好像我們屋子裏的窗口一樣,透過窗口我們可以看到外面的世界,但在如果我們理窗口遠一些的話,我們的看到的範圍將減少,越遠就越小。實際的信號處理過程中,我們用的矩形窗,但矩形窗在邊緣處將信號突然截斷,窗外時域信息全部消失,導致在頻域增加了頻率分量的現象,即頻譜泄漏。避免泄漏的最佳方法是滿足整週期採樣條件,但實際中是不可能做到的。對於非整週期採樣的情況,必須考慮如何減少加窗時造成的泄漏誤差,主要的措施是使用合理的加窗函數,使信號截斷的銳角鈍化,從而使頻譜的擴散減到最少。
首先介紹一下爲什麼要用函數窗:函數窗的主要用於對截斷處的不連續變化進行平滑,減少泄漏。此外,加窗處理還有很多其它的原因,如減少噪聲干擾、限定測試的持續時間、從頻率接近的信號中分離出幅值不同的信號……
常見的幾種窗的基本指標:
一個窗是否合適:窗譜主瓣寬度就儘可能的窄,且能量集中在主瓣內,以獲得較陡的過渡帶;窗譜旁瓣與主瓣相比應儘可能的小,旁瓣能量衰減要快,以利於增加阻帶衰耗。
漢明窗就是信號窗口的一種,在matlab中執行命令,畫出plot(hamming(100))的圖如下:
它主要部分的形狀像sin(x)在0到pi區間的形狀,而其餘部分都是0.這樣的函數乘上其他任何一個函數f,f只有一部分有非零值。
爲什麼漢明窗這樣取呢?因爲之後我們會對漢明窗中的數據進行FFT,它假設一個窗內的信號是代表一個週期的信號。(也就是說窗的左端和右端應該大致能連在一起)而通常一小段音頻數據沒有明顯的週期性,加上漢明窗後,數據形狀就有點週期的感覺了。
因爲加上漢明窗,只有中間的數據體現出來了,兩邊的數據信息丟失了,所以等會移窗的時候,只會移1/3或1/2窗,這樣被前一幀或二幀丟失的數據又重新得到了體現。
簡單的說漢明窗就是個函數,它的形狀像窗,所以類似的函數都叫做窗函數。希望你能明白。
2.加Hanmming窗的作用
現在在看G.723.1,對語音編碼剛入門,
發現在對信號進行LPC分析前,對信號乘以一個Hamming 窗,
乘法是:信號直接乘以一個HammingWindowTable中的值,這個加窗有什麼作用?
如果是限制帶寬的話, 在時域應對信號應做卷積的, 不明白,請賜教
因爲要處理的是無限長序列中的一段,所以必須對這段序列加窗採集出來。
典型的窗口大小是25ms,幀移是10ms。漢明窗函數爲
W(n,α ) = (1 -α ) - α cos(2*PI*n/(N-1)),0≦n≦N-1
一般情況下,α取0.46 。
誰能解釋一下這個函數嗎?我實在是不理解,謝謝.
由於直接對信號(加矩形窗)截斷會產生頻率泄露,爲了改善頻率泄露的情況,加非矩形窗,一般都是加漢明窗,因爲漢明窗的幅頻特性是旁瓣衰減較大,主瓣峯值與第一個旁瓣峯值衰減可達40db。
舉例:
a=wavread('jiasiqi.wav'); %將音頻信號jiasiqi.wav讀入
subplot(2,1,1), %分配畫布,一幅圖上共兩個圖,這是第一個
plot(a);title('original signal'); %畫出原始信號,即前面這個音頻信號的原始波形
grid %添加網格線
N=256; %設置短時傅里葉變換的長度,同時也是漢明窗的長度
h=hamming(N); %設置漢明窗
for m=1:N %用漢明窗截取信號,長度爲N,主要是爲了減少截斷引起的柵欄效應等
b(m)=a(m)*h(m)
end
y=20*log(abs(fft(b))) %做傅里葉變換,取其模值,即幅頻特性,然後用分貝(dB)表示
subplot(2,1,2) %分配畫布,第二副圖
plot(y);title('短時譜'); %畫出短時譜
grid %添加網格線