5

現在、一連のデータのFFTを実行すると、x軸に周波数、y軸に振幅を持つプロットが得られます。エネルギーを得るためにグラフの下の面積を計算したいと思います。

方程式がなく、プロットの下の領域全体ではなく、プロットの特定の領域のみが必要なため、領域を決定する方法がわかりません。私ができる方法はありますか?

4

2 に答える 2

10

Matlab で数値積分を行う方法はたくさんあります。次に例を示します。

%# create some data
x = linspace(0,pi/2,100); %# 100 equally spaced points between 0 and pi/2
y = sin(x);

%# integrate using trapz, which calculates the area in the trapezoid defined by 
%# x(k),x(k+1),y(k),y(k+1) for k=1:length(x)
integral = trapz(x,y);

%# if you only want to integrate part of the data, do
partialIntegral = trapz(x(10:20),y(10:20));

%# show the integrated area
figure, 
area(x,y); 
hold on, 
area(x(10:20),y(10:20),'FaceColor','red')
于 2010-04-14T23:51:46.970 に答える
3

FFT は離散的であり、連続的ではありません。すべてのビン値を合計するだけです。パワー スペクトル (振幅の 2 乗) を見ている場合、ビンの値は W/Hz 単位であるため、各値 (または単に合計) を Hz 単位のビン幅で乗算して、電力を取得する必要があります (およびしたがって、入力サンプルの総エネルギー)。

于 2010-04-15T07:59:08.510 に答える