如何在PCM信号上应用窗口功能?

时间:2014-07-14 21:07:49

标签: fft pcm dft

任何人都可以请解释一下或给出一些“如何在PCM信号上正确应用32窗口功能吗?我需要这个来对音频信号执行fft,但是无法找到正确的方法!

1 个答案:

答案 0 :(得分:0)

要对信号应用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);

希望我能让事情变得更加清晰。