A tricky issue, let me take a note here so I don't have to redo it again and again.
The Matlab and Python Numeric normalization of fft is such that the discrete version of Parseval's theorem,
sum(signal .* signal) = sum(fourier .* conj(fourier))
is satisfied by
fourier = fft(signal) / sqrt(length(signal))
On the other hand, if we require the continuous version of Parseval's theorem,
int_0ˆT |signal|ˆ2 dt = int_{-infty}ˆ{+infty} |fourier|ˆ2 df
sum(signal .* signal) * dt = sum(fourier .* conj(fourier)) * (1/T)
we need to set
fourier = fft(signal) * dt
where of course T = dt * length(signal).
fft
(/progtricks)
2005-01-25, 14:16
[edit]
© M. Vallisneri 2012 — last modified on 2010/01/29
Tantum in modicis, quantum in maximis