计算特定频率范围下功率谱下的面积

时间:2013-02-07 17:14:18

标签: matlab range fft frequency spectrum

下面我将介绍如何为信号计算功率谱:

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的频率范围。向量freq的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)?

提前感谢您提供任何帮助

1 个答案:

答案 0 :(得分:2)

我将按以下步骤进行:

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

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

如果我理解你的问题是正确的,那么上述内容应该会引导你得出你想要的结果。

修改

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

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

然后致电

trapz(4:.1:6,int_spec)