计算功率谱密度时的归一化

时间:2015-07-01 05:59:31

标签: signal-processing fft

计算功率谱密度的方法: -

F = fft (s);

PSD = (1/N) * F * conj(F);

哪里" s"是以阵列形式提供给我的输入信号。

我也知道采样率(Fs)

我想知道规范化因子"N"的值应该是什么。

2 个答案:

答案 0 :(得分:4)

功率谱密度函数有许多不同的定义,并且相应地存在比例因子的不同可能性。 Numerical recipes in C的第13.4节列出了几个常见的定义,例如:

  
      
  • 为离散的正,零和负频率定义,它们的总和是函数均方幅度
  •   
  • 仅针对零和离散正频率定义,并且它们的总和是函数均方幅度
  •   
  • 在从-f c 到f c 的奈奎斯特间隔中定义,其在此范围内的积分是函数均方幅度
  •   
  • 从0定义到f c ,其在此范围内的积分是函数均方幅度
  •   

因此,正确的定义和缩放因子将特定于您的应用程序。作为这些不同定义可能对缩放因子产生的影响的说明,我在下面列出了一些使用不同定义的特定实现。

由于我提到了数字配方书,我们可以开始查看为了显示PSD的示例实现而选择的定义(不建议它是 正确的定义)。在这种情况下,上面列出的第二个定义(即&#34;仅为零和离散正频率定义,并且它们的总和是函数均方幅度&#34;)已被使用,这导致归一化:< / p>

len = length(F);
N   = 0.5*len^2;
PSD = (1/N) * F(1:len/2) * conj(F(1:len/2));
另一方面,

Octave's pwelch使用不同的功率谱密度定义(即上面列出的最后一个),这导致了不同的归一化近似:

len = length(F);
N   = 0.5*len*Fs; % where Fs is the sampling rate
PSD = (1/N) * F(1:len/2) * conj(F(1:len/2));

答案 1 :(得分:1)

mImageUserProfile .getViewTreeObserver() .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mBitmapIcon = CommUtils.getUserProfileBitmap(); if(mBitmapIcon!=null) { mImageUserProfile .getViewTreeObserver() .removeGlobalOnLayoutListener(this); setupIcon(); } } }); 只是FFT中的点数。因此,如果你的FFT有2048个点,那么你需要将FFT输出区的幅度缩放N