Вычислите область под графиком FFT в MATLAB

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

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

5
задан Peter Mortensen 30 April 2010 в 23:31
поделиться

2 ответа

Существует много способов численного интегрирования с помощью 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')
10
ответ дан 18 December 2019 в 14:43
поделиться

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

3
ответ дан 18 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: