Mercurial > hg > aimmat
view aim-mat/tools/plotfft.m @ 0:74dedb26614d
Initial checkin of AIM-MAT version 1.5 (6.4.2011).
author | tomwalters |
---|---|
date | Fri, 20 May 2011 12:32:31 +0100 |
parents | |
children | 20ada0af3d7d |
line wrap: on
line source
% tool % % INPUT VALUES: % % RETURN VALUE: % % % (c) 2003-2008, University of Cambridge, Medical Research Council % Maintained by Tom Walters (tcw24@cam.ac.uk), written by Stefan Bleeck (stefan@bleeck.de) % http://www.pdn.cam.ac.uk/cnbh/aim2006 % $Date: 2008-06-10 18:00:16 +0100 (Tue, 10 Jun 2008) $ % $Revision: 585 $ function plotfft(name) % usage: plotfft('ghfgghfh.wav') [y,Fs,bits]=wavread(name); Fn=Fs/2; % Nyquist frequency t=0:1/Fs:length(y)/Fs; % time vector sampled at Fs Hz, % Next highest power of 2 greater than or equal to length(y) NFFT=2.^(ceil(log(length(y))/log(2))); % Take fft, padding with zeros, length(FFTX)==NFFT FFTX=fft(y,NFFT); NumUniquePts = ceil((NFFT+1)/2); % fft is symmetric, throw away second half FFTX=FFTX(1:NumUniquePts); MX=abs(FFTX); % Take magnitude of X % Multiply by 2 to take into account the fact that we threw out % second half of FFTX above MX=MX*2; MX(1)=MX(1)/2; % Account for endpoint uniqueness MX(length(MX))=MX(length(MX))/2; % We know NFFT is even % Scale the FFT so that it is not a function of the length of y. MX=MX/length(y); % f=(0:NumUniquePts-1)*2*Fn/NFFT;plot(f,MX); plot(f,MX); xlabel('Frequency [Hz]'); ylabel('Magnitude');