Discrete Fourier Transform of Even Function

  • Thread starter rmp251
  • Start date
  • #1
8
0

Main Question or Discussion Point

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
 

Answers and Replies

  • #2
mathman
Science Advisor
7,829
433
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
8
0
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
marcusl
Science Advisor
Gold Member
2,720
382
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
8
0
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
marcusl
Science Advisor
Gold Member
2,720
382
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:
  • #7
8
0
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
marcusl
Science Advisor
Gold Member
2,720
382
Right. f(15)=f(-1)=-0.83 and f(1)=+0.83, etc., so the sequence is exactly odd if f(0)=0.
 
  • #9
8
0
I was missing the f(0)=0 requirement. Makes sense now.

Thanks a lot for the insight!
 

Related Threads on Discrete Fourier Transform of Even Function

Replies
10
Views
2K
Replies
1
Views
2K
  • Last Post
Replies
2
Views
3K
Replies
5
Views
7K
Replies
2
Views
4K
Replies
1
Views
1K
  • Last Post
Replies
15
Views
2K
Replies
2
Views
1K
  • Last Post
Replies
1
Views
2K
  • Last Post
Replies
5
Views
1K
Top