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. Apr 26, 2007 #1
    I am looking at Palm's "Introduction to MatLab 7 for Engineers" page 511. The problem involves solving a Second Order Diff Equation. The solution to the diff equation is straight forward. What I am wondering is what Plam is doing in the plot function?

    [tex] \ddot{\Theta} + \frac {g} {l} sin \Theta = 0 [/tex]

    His answer is below:

    in the m file pendul:

    function xdot = pendul(t,x)
    global g L
    xdot = [x(2); -(g/L)*sin(x(1))];

    in the m file example8_6_1

    global g L
    g = 9.81;
    L = 1;
    [ta, xa] = ode('pendul', [0,5], [0.5,0]);
    plot(ta,xa(:,1), xlabel('Time (s)'), ylabel('Angle(rad)')


    In the plot(ta,xa(:,1) what is the (:,1)? What is he doing? And why couldn't he just put an xa without the (:,1)?
  2. jcsd
  3. Apr 27, 2007 #2
    In this example X is a vector containing [x , xdot], so the solution xa is a matrix whose rows are [x(ta), xdot(ta)] where ta changes in each row. So xa looks like
    [x(t1) xdot(t1)
    x(t2) xdot(t2)
    x(t3) xdot(t3) ]
    and so on. He wants to plot the angle x versus time, so you select the first column of the solution matrix xa. This is done by xa(:,1), where the colon : indicates that you want all of the rows, and the 1 indicates you want the first column. If you wanted to plot the angular velocity versus time you would write plot(ta,xa(:,2)). Does that make sense?
  4. Apr 27, 2007 #3
    Thank you very much. It makes perfect sense. I will learn matlab yet!
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook