假设我有两个功率谱矢量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)的平均值。欢迎所有想法!
谢谢!
答案 0 :(得分:0)
您可以尝试使用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')
这是结果(红色=平均功率):