Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Complex Fourier Series using Matlab

  1. Mar 23, 2014 #1
    I have a problem synthesising the complex Fourier series using Matlab. The time domain periodic function is:

    -1, -1.0 ≤ t < -0.5
    1 , -0.5≤ t <0.5
    -1, 0.5 ≤ t < 1

    The single non zero coefficient is: Cn = [itex]\frac{2}{\pi n}[/itex], Co is 0 (average is 0).

    f(t)= [itex]\sum Cn e^{jnwt}[/itex] (limits are -∞ to ∞, could not find the latex symbol)

    This makes:

    f(t) = ([itex]\frac{2}{\pi}[/itex] [itex]e^{jwt}[/itex] - [itex]\frac{2}{\pi*3}[/itex] [itex]e^{j3wt}[/itex] + [itex]\frac{2}{\pi*5}[/itex] [itex]e^{j5wt}[/itex] -.... [itex]\frac{2}{\pi*∞}[/itex] [itex]e^{j∞wt}[/itex]) + ([itex]\frac{2}{\pi}[/itex] [itex]e^{-jwt}[/itex] - [itex]\frac{2}{\pi*3}[/itex] [itex]e^{-j3wt}[/itex] + [itex]\frac{2}{\pi*5}[/itex] [itex]e^{-j5wt}[/itex] -.... [itex]\frac{2}{\pi*∞}[/itex] [itex]e^{j-∞wt}[/itex])

    In order to enter this in Matlab I have combined the exponential terms to obtain cosine waves.
    For example when n=1 and n=-1.

    [itex]\frac{2}{\pi}[/itex] [itex]e^{jwt}[/itex] + [itex]\frac{2}{\pi}[/itex] [itex]e^{-jwt}[/itex]

    [itex]\frac{2}{\pi}[/itex]( [itex]e^{jwt}[/itex] + [itex]e^{-jwt}[/itex])

    [itex]\frac{4}{\pi}[/itex]( [itex]\frac{e^{jwt}+e^{-jwt}}{2}[/itex])

    [itex]\frac{4}{\pi}[/itex]( [itex]cos wt[/itex])

    when n=2 and n=-2.

    [itex]\frac{-4}{\pi*3}[/itex]( [itex]cos 3wt[/itex])

    So I end up with cosine terms which only exist for odd multiples of 'n' and the '+' and '-' sign alternates.
    When I enter this in Matlab I can not recreate my time domain signal. Could someone please offer me some advice on where I have gone wrong.

  2. jcsd
  3. Mar 23, 2014 #2


    User Avatar
    Science Advisor
    Homework Helper

    You are doing the right things, but the details went wrong somewhere. Your input square wave has a period of 2 seconds, but a term like ##\cos \omega t## in your Fourier series has a period of ##2\pi## seconds.

    It looks like this was wrong from the start, when you said ##f(t) = \sum C_n e^{jn\omega t}##.

    Note you will need several terms (say 10) before you get something that looks close to a square wave, and see http://en.wikipedia.org/wiki/Gibbs_phenomenon for why a finite number of terms in the series will never look "exactly" like a square wave.
  4. Mar 23, 2014 #3
    Alphazero: Thank you very much for your reply. Although I did not show itin my post I did actually enter ω = π into matlab.
    However I did make a big mistake which was I entered t=linspace(0,2π), without realising that my domain is from -π to +π, doh!.
    I have now got the right shape, thanks ever so much as I was doubting my working out.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook