任何人都可以请解释一下或给出一些“如何在PCM信号上正确应用32窗口功能吗?我需要这个来对音频信号执行fft,但是无法找到正确的方法!
答案 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);
希望我能让事情变得更加清晰。