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 是离散的,而不是连续的 - 您只需要将所有 bin 值相加即可。如果您正在查看功率谱(幅度平方),则 bin 值以 W/Hz 为单位,因此您需要将每个值(或者只是总和)乘以以 Hz 为单位的 bin 宽度以获得功率(和因此输入样本中的总能量)。

于 2010-04-15T07:59:08.510 回答