1

下面我介绍我的代码如何计算信号的功率谱:

Fs=100;
n = length(x) (in my example always n=160);

whann = window(@hann,n).';
x = whann.*x';

xdft = fft(x);
xdft = (2/length(x))*xdft(1:length(x)/2+1);
xdft = abs(xdft);
xdft=xdft.^2;
freq = 0:Fs/length(x):Fs/2;

现在,我想计算功率谱下的面积,但仅适用于 4-6 Hz 的频率范围。矢量频率的前 32 个元素如下所示:

freq = [0,00    0,28    0,56    0,83    1,11    1,39    1,67    1,94    2,22    2,50    2,78    3,06    3,33    3,61    3,89    4,17    4,44    4,72    5,00    5,28    5,56    5,83    6,11    6,39    6,67    6,94    7,22    7,50    7,78    8,06    8,33]

所以,我只能找到 4,17 Hz- 6,11 Hz 之间的区域。

您能否建议我,如何计算特定频率范围的频谱面积(如上所述,例如 4-6 Hz)?

提前感谢您的帮助

4

1 回答 1

2

我将按如下方式进行:

idx = find(freq>=4 & freq<=6);

trapz(freq(idx),spectrum(idx))

如果我理解你的问题是正确的,上面所说的应该会引导你得到你想要估计的结果。

编辑

由于您没有 和 的频谱值freq=4Hz,因此freq=6Hz我建议插入如下值:

int_spec = exp(interp1(log(freq),log(spec),log(4:.1:6),'linear','extrap'))

然后打电话

trapz(4:.1:6,int_spec)
于 2013-02-07T17:36:48.500 回答