【发布时间】:2014-07-14 21:07:48
【问题描述】:
谁能解释我或提供一些来源“如何在 PCM 信号上正确应用 32 窗口函数?我需要这个来对音频信号执行 fft,但找不到正确的方法!
【问题讨论】:
-
问题更适合dsp.stackexchange.com
谁能解释我或提供一些来源“如何在 PCM 信号上正确应用 32 窗口函数?我需要这个来对音频信号执行 fft,但找不到正确的方法!
【问题讨论】:
要对信号应用 N = 32 窗口函数,您需要一个长度为 32 的 PCM 信号(这意味着如果信号太长,您需要裁剪信号或将其分成块),然后应用窗口函数只需将窗口乘以信号。
有关 Windows 的更多信息,请参阅:http://en.wikipedia.org/wiki/Window_function
以下是如何在 C# 中实现 Hann N = 32 窗口的指示性代码。
float Hann ( int n )
{
int N = 32;
float result = 0.5 * ( 1 - Math.Cos( 2 * PI * n / (N - 1) );
return result;
}
然后要应用窗口,您只需将窗口与数据相乘即可。
myData = new float[32];
myWindowedData = new float[32];
myData = getData();
for( int i = 0 ; i < 32; i++)
myWindowedData = myData[i]*Hann(i);
希望我已经让事情变得更清楚了。
【讨论】: