Вычислить площадь под графом БПФ в MATLAB - PullRequest
5 голосов
/ 15 апреля 2010

В настоящее время я сделал БПФ набора данных, который дает мне график с частотой по оси x и амплитудой по оси y. Я хотел бы рассчитать площадь под графиком, чтобы дать мне энергию.

Я не уверен, как определить площадь, потому что я без уравнения, а также я хочу только определенную область графика, а не всю область под графиком. Есть ли способ, которым я могу это сделать?

Ответы [ 2 ]

11 голосов
/ 15 апреля 2010

Есть много способов сделать численную интеграцию с 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')
3 голосов
/ 15 апреля 2010

БПФ является дискретным, а не непрерывным - вам просто нужно сложить все значения бина. Если вы смотрите на спектр мощности (квадрат величины), то значения бинов приведены в Вт / Гц, поэтому вам необходимо умножить каждое значение (или, в качестве альтернативы, просто сумму) на ширину бина в Гц, чтобы получить мощность ( отсюда полная энергия в вашей входной выборке).

...