MATLAB: How to calculate and plot power spectral density of a given signal

psdsignal processing

I have signal and i want to plot it's power spectral density , What should i do? is it right if i first calculate the FFT of a signal and then get the square abs of it's value?

Best Answer

If you have the Signal Processing Toolbox, it is easiest to use periodogram().
That handles all the scaling for you.
Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*100*t)+randn(size(t));
[Pxx,F] = periodogram(x,[],length(x),Fs);
plot(F,10*log10(Pxx))
If you do not have the Signal Processing Toolbox, the PSD is proportional to the absolute value squared of the DFT (calculated by fft())
For more information on that scaling, please see:
Related Question