How do I normalize the fft output for a signal?

5 次查看(过去 30 天)
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 个评论
Vieniava
Vieniava 2011-2-1
Why do you use 2D FFT? Do you have image for processing?
Resolution is derived in a wrong way.

请先登录,再进行评论。

回答(1 个)

Vieniava
Vieniava 2011-2-1
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"

类别

Help CenterFile Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by