【发布时间】:2015-07-01 05:59:30
【问题描述】:
计算功率谱密度的方法:-
F = fft (s);
PSD = (1/N) * F * conj(F);
其中“s”是以数组形式提供给我的输入信号。
我也知道采样率(Fs)。
我想知道标准化因子"N" 的值应该是多少。
【问题讨论】:
标签: signal-processing fft
计算功率谱密度的方法:-
F = fft (s);
PSD = (1/N) * F * conj(F);
其中“s”是以数组形式提供给我的输入信号。
我也知道采样率(Fs)。
我想知道标准化因子"N" 的值应该是多少。
【问题讨论】:
标签: signal-processing fft
功率谱密度函数有许多不同的定义,相应的比例因子也有不同的可能性。 Numerical recipes in C 的第 13.4 节列出了几个常见的定义,例如:
- 为离散的正、零和负频率定义,其总和是函数均方幅度
- 仅针对零和离散正频率定义,其总和是函数均方幅度
- 定义在从 -fc 到 fc 的 Nyquist 区间中,它在该范围内的积分是函数均方幅度
- 定义从0到fc,它在这个范围内的积分就是函数均方幅度
因此,正确的定义和比例因子将特定于您的应用程序。为了说明这些不同定义可能对缩放因子产生的影响,我在下面列出了一些使用不同定义的具体实现。
由于我提到了数值食谱书,我们可以开始查看为显示 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 输出 bin 的大小按1 / 2048 的因子缩放。
【讨论】: