MATLAB Answers

Payam
0

Calculate PSD using FFT

Asked by Payam
on 21 Nov 2011
Hi, The question is to calculate PSD using FFT function in MATLAB. Ive already done it with pwelch command in MATLAB and now it's time to do it with FFT command and compare the results. If I have file named: file2.Mat which contains 3 columns. first column is time, second Force and the third is acceleration. the sampling is 4000Hz and the number of NFFT is ,let us say, 4444. I know that we need to multiply the window with time column. And then what?
Does anybody know how to do it? Ive been work on this for like 3 hours.
regards

  0 Comments

Sign in to comment.

Tags

3 Answers

Wayne King
Answer by Wayne King
on 21 Nov 2011

Why don't you just use spectrum.periodogram?
Fs = 1e3;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*100*t)+randn(size(t));
plot(psd(spectrum.periodogram,x,'Fs',Fs,'NFFT',length(x)));
If you want to do it simply with fft()
xdft = fft(x);
xdft = xdft(1:length(x)/2+1);
xdft(2:end-1) = 2*xdft(2:end-1);
psdest = 1/(length(x)*Fs)*abs(xdft).^2;
freq = 0:Fs/length(x):Fs/2;
plot(freq,10*log10(psdest));
grid on;
Compare the plots.

  1 Comment

Wayne King
on 21 Nov 2011
If you want to use a window, like Hamming, etc. You can do:
plot(psd(spectrum.periodogram('Hamming'),x,'Fs',Fs,'NFFT',length(x)));

Sign in to comment.


Payam
Answer by Payam
on 21 Nov 2011

Why xdft = xdft(1:length(x)/2+1); % what does that mean? xdft(2:end-1) = 2*xdft(2:end-1); %? dubbel side? and why?
I dont understand these two lines psdest = 1/(length(x)*Fs)*abs(xdft).^2; freq = 0:Fs/length(x):Fs/2;

  1 Comment

Payam
on 21 Nov 2011
Shouldnt I multiply the hanning windows with my time vector?

Sign in to comment.


Wayne King
Answer by Wayne King
on 21 Nov 2011

The PSD is an even function of frequency, so you only need from 0 to the Nyquist, if you want to conserve the total power, you have to multiply all frequencies except 0 and the Nyquist by two if you only keep 1/2 the frequencies. 0 and the Nyquist only occur once in the PSD estimate, all other frequencies occur twice. If you look at the example I gave you, then you see it agrees with the scaling in MATLAB's periodogram.
The answer about multiplying by a window, Hanning, Hamming, Blackman, Tukey. etc. is that it depends. A window reduces the bias in the periodogram, but that comes at the cost of reduced frequency resolution (a broader main lobe).

  0 Comments

Sign in to comment.