Chronology | Current Month | Current Thread | Current Date |
[Year List] [Month List (current year)] | [Date Index] [Thread Index] | [Thread Prev] [Thread Next] | [Date Prev] [Date Next] |
/snip/ Suppose we have two seconds of
waveform data, sampled at intervals of
dt = 1 millisecond
for a total of
N = 2000 samples.
Then the abscissas in the frequency domain will have a spacing of
df = 1 / (N dt) (as a rule)
= 0.5 Hz (in this case)
C) I claim that when doing a forward FFT, the output should be scaled by a
factor of dt. In particular, if Vin is a delta function
Vin = [1, 0, 0, 0, .... , 0]
then the transform should be
myVf = myFFT(Vin)
= [.001, .001, .001, .... , .001]
D) I claim that when doing an inverse FFT, the output should be scaled by a
factor of df. In particular, if Vf is a delta function,
Vf = [1, 0, 0, 0, .... , 0]
then the inverse transform should be
myVout = myIFFT(Vf)
= [.5, .5, .5, .... , .5]
Note that when using the Scilab or Matlab inverse FFT, the software stuffs
in a factor of 1/N automagically, so you need to undo that (multiply by a
factor of N) before applying the factor of df. By the way, note that
multiplying by (N df) is the same as dividing by (dt).
E) Note that myIFFT is the inverse of myFFT. Their definitions are
completely symmetric; one has a factor of dt and the other has a factor of
df. Neither of them needs to have a factor of 1/N. This all works out
cleanly because
df * dt = 1/N