2015-07-01 42 views
3

方法来计算功率谱密度: -标准化而计算功率谱密度

F = fft (s); 

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

其中“s”是这是考虑到我在一个阵列的形式的输入信号。我也知道采样率(Fs)

我想知道标准化因子"N"的值应该是多少。

回答

4

功率谱密度函数有许多不同的定义,并且对于比例因子有相应不同的可能性。部Numerical recipes in C 13.4列出了几种如共同定义:

  • 离散正,零和负频率所定义,并且其总和超过这些就是函数均方幅度
  • 零和离散正定义仅频率,并且其总和超过这些是在函数从-f ç至f ç均方根振幅
  • 在奈奎斯特间隔来定义和其积分超过这个范围是在函数均方幅度
  • 从0定义到f Ç,其积分超过这个范围是在函数均方幅度

权的定义,因此缩放因子将是特定于应用程序。为了说明这些不同定义对缩放因子可能产生的影响,我列出了一些使用不同定义的特定实现。

由于我提到的数字食谱书,我们可以开始看看为了显示PSD的示例实现(不建议它是正确的定义)选择的定义。在这种情况下,第二定义中列出的上述已被使用,这导致了归一化(即,“仅用于零个离散正频率定义的,并且其总和超过这些就是函数均方振幅”。):

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

N只是FFT中的点数。因此,如果您的FFT具有2048个点,那么您需要将FFT输出格的大小缩小一个因子1/2048

+0

我的输入阵列由仅实数。那么,FFT中的点数是(length_input_array)/ 2? – VikramBishnoi

+0

您需要根据所需的分辨率,任何实时约束以及输入数据的性质决定N应该是什么。对于实际输入数据,使用N/2个输出点并将幅度按2/N进行缩放。 –

+0

不需要考虑采样频率吗? – VikramBishnoi