PSD calculation using FFT -

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 件のコメント

dpb
dpb 2018 年 8 月 3 日
Don't know why the factor Fs is in the denominator there...see amplitude-estimation-and-zero-padding

サインインしてコメントする。

回答 (1 件)

David Goodmanson
David Goodmanson 2018 年 8 月 3 日
編集済み: David Goodmanson 2018 年 8 月 3 日

0 投票

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.

カテゴリ

タグ

質問済み:

2018 年 8 月 3 日

編集済み:

2018 年 8 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by