How do I normalize the fft output for a signal?

4 views (last 30 days)
Tom
Tom on 1 Feb 2011
I've got data taken at 1000hz (1millisecond per sample), and am trying to convert it into the frequency domain. My code is so far
resolution = size(footfall,2);
tempfftvar = abs(fft2(detrend(footfall(:)'),1,2^nextpow2(size(footfall,2))));
fftvar = tempfftvar(1:(size(tempfftvar,2)/2))/resolution;
where footfall is my data. This gives my a graph that looks right, but the frequency scale is incorrect. I read somewhere that MATLAB FFT function doesn't normalise automatically, so above I tried to divide by N, num of samples. This still does not give me the scale I want.
  1 Comment
Vieniava
Vieniava on 1 Feb 2011
Why do you use 2D FFT? Do you have image for processing?
Resolution is derived in a wrong way.

Sign in to comment.

Answers (1)

Vieniava
Vieniava on 1 Feb 2011
Try this:
Fs=1000; % Hz
NFFT=2^nextpow2(size(footfall,2));
resolution=Fs/NFFT; % Hz/bin
faxe=(1:(NFFT/2) - 1)*resolution; % half of spectrum. DC component is taken into account via "-1"

Categories

Find more on Fourier Analysis and Filtering in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!