下面是我的代码,我是如何计算信号的功率谱的:
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赫兹)?
提前感谢您的帮助
发布于 2013-02-08 01:36:49
我会按以下步骤进行:
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)https://stackoverflow.com/questions/14756983
复制相似问题