【问题标题】:how to apply window function on PCM signal?如何对 PCM 信号应用窗口函数?
【发布时间】:2014-07-14 21:07:48
【问题描述】:

谁能解释我或提供一些来源“如何在 PCM 信号上正确应用 32 窗口函数?我需要这个来对音频信号执行 fft,但找不到正确的方法!

【问题讨论】:

  • 问题更适合dsp.stackexchange.com

标签: fft pcm dft


【解决方案1】:

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

希望我已经让事情变得更清楚了。

【讨论】:

    猜你喜欢
    • 2012-03-27
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多