Hi everyone,
I'm trying to perform an analysis in the frequency domain, but I'm confused regarding how to obtain the PSD signal.
Currently, I'm using the following to obtain the PSD:
L = length(data);% Compute Fast Fourier Transform
Y = fft(data);% Compute the two-sided spectrum P2
P2 = abs(Y/L);% Compute the single-sided spectrum P1 based on P2
P1 = P2(1:ceil(L/2)+1);P1(2:end-1) = 2*P1(2:end-1);power = P1;% Define the frequency domain axis
frequencies = fs*(0:ceil(L/2))/L;
I have tested this with the following signal:
fs = 200;x = 0:1/fs:20data = sin(2*pi*5*x);
And I get the following PSD:
I'm trying to calculate the mean frequency using the following formula:
mean_frequency = sum(power.*frequencies)/sum(frequencies)
Where I obtain
mean_frequency = 5.0587e-04
which is obviously wrong. However, when I use MATLAB's meanfreq function, I get meanfreq(data, fs) = 4.999Hz, which is the expected.
Can please anyone tell me what I'm doing wrong? After this I want to perform a complete analysis in the frequency domain (e.g, median frequency, total power, etc) and I need to make sure my PSD data is correct.
Many thanks for your attention,
Diogo
Best Answer