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

Matlab Question

  1. Oct 13, 2011 #1
    I want to input the following function so I can find the Fourier Transform of it:

    [tex]tri(\frac{t}{2\pi })Cos(2\pi (\frac{5}{\pi })t)[/tex]

    I couldn't find a simple way of doing a tri function so this is what I inputted in matlab:

    [tex]a(t_{1}) = (\frac{t_{1}}{\pi }+1)Cos(2\pi (\frac{5}{\pi })t_{1})[/tex] where -π < t1 < 0

    [tex]b(t_{2}) = (-\frac{t_{2}}{\pi }+1)Cos(2\pi (\frac{5}{\pi })t_{2})[/tex] where 0 < t2 < π

    [tex]g(t) = a(t_{1}) + b(t_{2})[/tex]

    Here is what I typed into matlab:
    >> t1 = -pi:0.01:0;
    >> t2 = 0:0.01:pi;
    >> g = ((t1/pi) + 1)*cos(2*pi*(5/pi)*t1) + ((-t2/pi) + 1)*cos(2*pi*(5/pi)*t2);

    But I get this error:
    ??? Error using ==> mtimes
    Inner matrix dimensions must agree.

    I looked in the workspace and t1 and t2 both have the same dimensions of 1x315 (just different min anad max values).

    Thanks for your help.
  2. jcsd
  3. Oct 13, 2011 #2
    OK I managed to get this to work:

    g=((t1/pi) + 1).*cos(2*pi*(5/pi)*t1) + ((-t2/pi) + 1).*cos(2*pi*(5/pi)*t2);

    But how can I plot this? I tried creating a new time vector t=-pi:0.001:pi;

    But then I get this error:
    ??? Error using ==> plot
    Vectors must be the same lengths.
  4. Oct 13, 2011 #3
    OK worked it out! :)

    To do a tri function multipled with another function, you need to break it up into two components and think of the tri as two straight lines, and then use a rect function for each of the two components, as shown below:

    t = -pi:0.1:pi;
    y1 = ( (-pi <= t) .* (t < 0 ) ); %rect[(t-pi/2)/pi]
    g1 = y1.*((t/pi)+1).*cos(2*pi*(5/pi)*t);
    y2 = ( (0 <= t) .* (t < pi ) ); %rect[(t+pi/2)/pi]
    g2 = y2.*((-t/pi)+1).*cos(2*pi*(5/pi)*t);
    Last edited: Oct 14, 2011
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook