假设我有两个功率谱向量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)的平均值。欢迎所有的想法!
谢谢!
发布于 2013-08-06 19:04:30
您可以尝试使用interp1,它可以在一个信号内进行插值,以匹配另一个频谱的频率。下面的示例说明了这一点:
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):

https://stackoverflow.com/questions/18068987
复制相似问题