首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算某一频率范围内的功率谱下面积

计算某一频率范围内的功率谱下面积
EN

Stack Overflow用户
提问于 2013-02-08 01:14:18
回答 1查看 2.9K关注 0票数 1

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

代码语言:javascript
复制
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个元素如下所示:

代码语言:javascript
复制
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赫兹)?

提前感谢您的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-08 01:36:49

我会按以下步骤进行:

代码语言:javascript
复制
idx = find(freq>=4 & freq<=6);

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

如果我没理解错你的问题,上面所说的应该会让你得到你想要估计的结果。

编辑

因为你没有freq=4Hzfreq=6Hz的谱值,所以我建议像这样插入值:

代码语言:javascript
复制
int_spec = exp(interp1(log(freq),log(spec),log(4:.1:6),'linear','extrap'))

然后调用

代码语言:javascript
复制
trapz(4:.1:6,int_spec)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14756983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档