Discrete Fourier Transform of Even Function

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
8 replies · 6K views
rmp251
Messages
8
Reaction score
0
I'm confused about the DFT of the data, fn = cos(3[itex]\pi[/itex]n/N) for n=0,1,...,N. It is definitely an even function, and I read that the Fourier coefficients of an even function is real. But when I take the FFT of this in Matlab I get complex numbers, not real numbers. What am I missing?

Thanks !
Reuben
 
Physics news on Phys.org
The code is pretty simple:

N=16;
n = [0:N-1];
f = cos(3*pi*n/N);
F = fft(f,N);

The resulting F is:
1.0000
1.0000 + 4.1412i
1.0000 - 5.6858i
1.0000 - 2.0586i
1.0000 - 1.2027i
1.0000 - 0.7609i
1.0000 - 0.4596i
1.0000 - 0.2180i
1.0000
1.0000 + 0.2180i
1.0000 + 0.4596i
1.0000 + 0.7609i
1.0000 + 1.2027i
1.0000 + 2.0586i
1.0000 + 5.6858i
1.0000 - 4.1412i
 
This function is not even--remember that the DFT makes the hidden assumption that your signal is periodic outside of the specified ordinates, so f(-16:-1) = f(0:15). Your function is mostly (but not exactly) odd, so you mostly have an imaginary transform, but it is complex. You have a discontinuity between n=-1 and n=0 (and also n=16, 17), resulting in a smeared spectrum.
 
I understand... except the part where you say the function is not exactly odd. Based on what you're saying, if we extend the signal beyond n=0..N-1 to make it periodic, then isn't it exactly odd (regardless of any discontiniuity)?

Thanks all for the responses!
 
Not quite. Try plotting it in Matlab. You have f(0)=1, so to be exactly odd you'd need f(-1)=f(15) =-1. It's not.

EDIT: Ah, that's where the real 1's come from.

Imagine that you take your sequence as is except you set f(0)=0--now it's exactly odd, because f(1)=-f(-1)=-f(15). So the transform of this sequence is purely imaginary.
The sequence {f(0)=1, f(1:15)=0} is even so its spectrum is pure real. In fact, this sequence is an impulse, so its spectrum is all ones.
Add them together to form the total sequence you wrote. Since DFT is a linear operation, the total spectrum is the sum of the individual spectra, one of which is imaginary and the other of which is all real ones.
 
Last edited:
Why do we need f(-1)=f(15) = -1 ?

We have f(-1)=f(15) by periodic extension. And f(-1)= -f(1) = -0.8315.

We're talking about odd meaning antisymmetric about the f axis (n=0), correct?
 
I was missing the f(0)=0 requirement. Makes sense now.

Thanks a lot for the insight!