首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab平均两个不同频率向量的傅立叶变换

Matlab平均两个不同频率向量的傅立叶变换
EN

Stack Overflow用户
提问于 2013-08-06 06:39:21
回答 1查看 729关注 0票数 0

假设我有两个功率谱向量PS1和PS2,它们是使用fft创建的,然后只取正频率值并将FFT值平方(实际上是复数共轭)。

还假设PS1和PS2的相应频率值不同。例如,PS1( 10 )可能对应于10 Hz,而PS2(10)可能对应于10.5 Hz。

我想要这两个(或更多)功率谱的平均值。我如何才能最好地创建这样的平均值?如果PS_ave是一个比任何原始功率谱都长的向量,只要存在对应的频率向量,就没有问题。因此,PS_ave(11)可能对应于10.25 Hz,并且这个值可能应该是PS1(10)和PS2(10)的平均值。欢迎所有的想法!

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-08-06 19:04:30

您可以尝试使用interp1,它可以在一个信号内进行插值,以匹配另一个频谱的频率。下面的示例说明了这一点:

代码语言:javascript
复制
v1 =1;
t1 = [0:0.1:10];
sig1 = sin(2*pi*t1*v1).*exp(-0.5*t1)/length(t1);
v2 = 0.5;
t2 = [0:0.2:10];
sig2 = cos(2*pi*t2*v2).*exp(-0.5*t2)/length(t2);
s1= fft(sig1);
s1 = s1(1:end/2);
f1 = [0:length(s1)-1]*(1/max(t1));
s2= fft(sig2); 
s2 = s2(1:end/2);
f2 = [0:length(s2)-1]*(1/max(t2));
p1 = abs(s1);
p2 = abs(s2);

% Now average using interpolation to find points in the longer vector matching the shorter

p1_interp = interp1(f1,p1,f2);
power_avg = mean([p2; p1_interp],1)

hold on, plot(f2,power_avg,'r')

下面是结果(red = avg power):

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18068987

复制
相关文章

相似问题

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