方法来计算功率谱密度: -标准化而计算功率谱密度
F = fft (s);
PSD = (1/N) * F * conj(F);
其中“s”是这是考虑到我在一个阵列的形式的输入信号。我也知道采样率(Fs)
。
我想知道标准化因子"N"
的值应该是多少。
方法来计算功率谱密度: -标准化而计算功率谱密度
F = fft (s);
PSD = (1/N) * F * conj(F);
其中“s”是这是考虑到我在一个阵列的形式的输入信号。我也知道采样率(Fs)
。
我想知道标准化因子"N"
的值应该是多少。
功率谱密度函数有许多不同的定义,并且对于比例因子有相应不同的可能性。部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));
N
只是FFT中的点数。因此,如果您的FFT具有2048个点,那么您需要将FFT输出格的大小缩小一个因子1/2048
。
我的输入阵列由仅实数。那么,FFT中的点数是(length_input_array)/ 2? – VikramBishnoi
您需要根据所需的分辨率,任何实时约束以及输入数据的性质决定N应该是什么。对于实际输入数据,使用N/2个输出点并将幅度按2/N进行缩放。 –
不需要考虑采样频率吗? – VikramBishnoi