# Discrete Fourier Transform of Even Function

1. Apr 5, 2012

### rmp251

I'm confused about the DFT of the data, fn = cos(3$\pi$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

2. Apr 5, 2012

### mathman

The Fourier coefficients are real. I can only guess that there may be something wrong in the way you are using Matlab or Matlab may have an error.

3. Apr 5, 2012

### rmp251

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

4. Apr 5, 2012

### marcusl

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.

5. Apr 5, 2012

### rmp251

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!

6. Apr 5, 2012

### marcusl

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: Apr 5, 2012
7. Apr 5, 2012

### rmp251

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?

8. Apr 5, 2012

### marcusl

Right. f(15)=f(-1)=-0.83 and f(1)=+0.83, etc., so the sequence is exactly odd if f(0)=0.

9. Apr 5, 2012

### rmp251

I was missing the f(0)=0 requirement. Makes sense now.

Thanks a lot for the insight!