How to normalize Fourier transform plots with number of data
eesyliu
I have been requested to normalize the y-axis of FFT plot with the number of data. Is there any comment that I can get this number or is there any function in FFT can be automatically adjust eh y-axis be dividing it with the number of data?
Thanks.
Also SetScale d has no effect to the _FFT wave. Seems that those y magnitude of _FFT waves are not affected by SetScale commend.
FFT/OUT=3/DEST=RWVdemean_FFT RWVdemean
SetScale/I x 0,500,"Hz", RWVdemean_FFT
SetScale/I y 0,0.2, " ", RWVdemean_FFT
<pre><code class="language-igor">
May 6, 2013 at 02:51 am - Permalink
Variable NOP=Dimsize (wave1,0)
//wave1_FFT is the FFT wave resulting from Fourier analysis function
wave1_FFT = 2*wave1_FFT/NOP
I read the manual regarding FFT in Igor and the real Fourier transform. In order to get back the Fourier transform (not FFT) magnitude apart from DC (0Hz), I intended to multiply the wave by 2 /number of data in wave1.
Please tell me if I am doing this right (i.e. multiply by 2 / number of data N in wave1) to get back the Fourier magnitude.
I am puzzled because after doing that, I got a plot with y-axis in 0.2 range (acceleration) and x axis is 0 -500Hz. It means that I have something (for e.g.) 0.01g at 200Hz and I can't get physically what it means by 0.01g at 200Hz.
May 6, 2013 at 03:39 am - Permalink
Setscale y ...
is not for renormalizing 1D data, it is for applying the waveform model of data to a second dimension of multidimensional data (Imagine an image from a microscope with equally spaced pixels representing a distance of 1um. Setscale x ... and Setscale y... set the horizontal and vertical pixel spacings, while the stored data in each pixel is a light intensity measurement.
So yeah, without checking your math (I can never remember the factor of 2 or pi or whatever and have to look it up everytime) the solution you came up with to normalize the data to number of points seems like the right approach.
Your other question about the interpretation of 0.02g at 500Hz...well it's your data, and you're the one who decided to report a fourier transform of it, it seems like you should interpret it! Seriously though, the Fourier transform keeps the vertical unit: If you have acceleration as a function of time, the transform gives you amplitudes of frequency components in units of acceleration. (As noted there are differences between the traditional fourier transform with continuous functions and integrals to infinity vs. the FFT which has to work on finite sized sets, but that shows up in the aforementioned normalization by number of points, and whether the transformed unit should also have a per sqrt(Hz) component like a true FT does). I'm not sure how to think of it in a simple physical picture either, but that's what it is.
Possibly you want to square the amplitude and say something about kinetic energy per frequency? It strikes me that is more appropriate for a transform of velocity vs. time rather than acc. vs. time, but that's easy enough to correct by integrating the original data or dividing the transform by frequency.
May 9, 2013 at 11:29 am - Permalink