How do I estimate PSD in matlab ? There are lots of methods to estimate, depending on application.

I am using an experimental data to identify faults ( e.g. interturn fault of electric motor), which gives periodic/regular waveforms (pre-fault) but erratically different (or could have some periodicity) waveforms (post-fault). In this application, my voltage signal, v(t) is sampled and collected using DAQ systems.


  1. Can v(t) be considered a wide-sense-stationary random process (WSS-RP) ?

I understand that there are multiple ways to get PSD. What is the best suggestion ? Is it ...

  1. By fourier transform the autocorrelation, if only v(t) is WSS-RP. [as described by Wiener-Khintichine Theorem]

  2. By

    • splitting the signal,v(t) into multiple frames( or segments)
    • applying window function : multiply each segment by a hamming window (i.e. convolution in freq. domain )
    • FFT each of the windowed signal
    • either multiply its conjugate or absolute square, to get the spectral density of the segment
    • resulting spectra are averaged to get the ultimate averaged spectrum Just like the explanation here Fig 9.1, Sect.11: Averaging Periodograms, pg14

What is the difference in the mathworks' application note in (www.mathworks.com/help/signal/ref/spectrum.html)

Can someone please guide in the codings ?

Feel grateful in the midst of dsp gurus ! kit


1 Answer 1


MATLAB has built-in functions taking care of the steps you mention in 2. You can check out the pwelch function (here) which uses Welch's method for PSD estimation.(here) The choice of segment length, number, overlap and windowing function presents a trade-off between bias and variance.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.