PSD calculation using FFT -

11 visualizaciones (últimos 30 días)
Sergio Roa
Sergio Roa el 3 de Ag. de 2018
Editada: David Goodmanson el 3 de Ag. de 2018
Hi! I am using the FFT for calculating a PSD using the code provided by MATLAB in Power Spectral Density Estimates Using FFT. The important par of the code is:
N = length(x);
xdft = fft(x);
xdft = xdft(1:N/2+1);
psdx = (1/(Fs*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:Fs/length(x):Fs/2;
I want to understand the fourth line, especially the factor (1/(Fs*N)). I am trying to compare with some definitions in vibrations books (Rao,S & Silva, Clarence) and I am not able to find the relation.
psdx = (1/(Fs*N)) * abs(xdft).^2;
Thank you!
  1 comentario
dpb
dpb el 3 de Ag. de 2018
Don't know why the factor Fs is in the denominator there...see amplitude-estimation-and-zero-padding

Iniciar sesión para comentar.

Respuestas (1)

David Goodmanson
David Goodmanson el 3 de Ag. de 2018
Editada: David Goodmanson el 3 de Ag. de 2018
Hi Sergio,
For a time domain signal x(t) and an N-point fft, y = fft(x)/N gives the correct scaling in the frequency domain as you probably know. In this case the spectrum is squared, which brings in two factors of 1/N. Then, since the result is the density energy/Hz, you need to divide by the frequency grid spacing delta_f as well. The overall factor is 1/(N^2 delta_f), but delta_f = Fs/N which leads to the result shown.

Categorías

Más información sobre Parametric Spectral Estimation en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by