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) 的平均值。欢迎所有想法!

谢谢!

4

1 回答 1

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')

结果如下(红色 = 平均功率):

在此处输入图像描述

于 2013-08-06T11:04:30.333 回答