我刚刚研究了一个窗口 FFT 的实现(Matlab),并看到了以下代码行:
w = sqrt(hann(fft_length, 'periodic'))
然后:
spectogram(:, column) = fft(ringbuffer.*w, fft_length) %why .*w ?
环形缓冲区显然包含信号的当前帧和重叠,所以对我来说很明显这需要与汉宁窗口相乘,但为什么首先取平方根?
我刚刚研究了一个窗口 FFT 的实现(Matlab),并看到了以下代码行:
w = sqrt(hann(fft_length, 'periodic'))
然后:
spectogram(:, column) = fft(ringbuffer.*w, fft_length) %why .*w ?
环形缓冲区显然包含信号的当前帧和重叠,所以对我来说很明显这需要与汉宁窗口相乘,但为什么首先取平方根?
纯粹主义者会告诉你它应该被称为 Hann 窗口或 VonHann,而不是 Hanning。
从数学的角度来看,Hann 窗也相当于频率减半的正弦平方窗,因此通过取平方根,您将得到一个正弦窗。
为什么要使用窗户?关于该主题的开创性论文是:
哈里斯,弗雷德。(1978 年 1 月)。“使用 Windows 进行离散傅里叶变换的谐波分析”
该论文的链接可以在参考资料 [10] 的Wikipedia关于 windows 的文章中找到。
希望这可以帮助。
赛德