0

fft を使用して作成された 2 つのパワー スペクトル ベクトル PS1 と PS2 があり、正の周波数値のみを取り、fft 値を 2 乗するとします (実際には複素共役)。

また、PS1 と PS2 の対応する周波数値が異なるとします。たとえば、PS1(10) は 10 Hz に対応し、PS2(10) は 10.5 Hz に対応する場合があります。

これら 2 つ (およびそれ以上) のパワー スペクトルの平均が必要です。そのような平均をどのように作成するのが最善でしょうか? 対応する周波数ベクトルが存在する限り、PS_ave が元のパワー スペクトルのいずれよりも長いベクトルであっても問題ありません。したがって、PS_ave(11) は 10.25 Hz に相当する可能性があり、この値はおそらく PS1(10) と PS2(10) の平均であるはずです。すべてのアイデアを歓迎します!

ありがとう!

4

1 に答える 1

0

を使用してみてくださいinterp1。これは、1 つの信号内で補間して、別のスペクトルの周波数と一致させることができます。次の例は、これを示しています。

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 に答える