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

Need help for ODE45 matlab

  1. Oct 3, 2007 #1
    I'm stuck with a problem with the subfunction ODE45 of Matlab:

    I need to save two matrixes' values created inside the ODE subfunction.
    I can't create an index inside the subfunction because I have to define it at the start so at every round it returns to zero.

    This is what I've done in the main:

    t0 = 0;
    tf = 450;
    y0 = [0 0 0 0 0 0];
    options = odeset('RelTol', 1e-6);
    [t, y] = ode45('ac_im3_IPM_prova1', [t0,tf] , y0, options);

    and this is the subfunction:

    function yp = ac_im3_IPM_prova1(t, y);
    .
    .
    .
    vsd = 2/3 * (vsa * cos(ttg) + vsb * cos(ttg - 2*pi/3) + vsc * cos(ttg - 4*pi/3));
    vsq = -2/3 * (vsa * sin(ttg) + vsb * sin(ttg - 2*pi/3) + vsc * sin(ttg - 4*pi/3));
    .
    .
    .
    yp(1) = (vsd - Rs*isd + (wge)*fsq);
    yp(2) = (vsq - Rs*isq - (wge)*fsd);
    yp(3) = ( - Rr*ird + (wge-p*wm)*frq);
    yp(4) = ( - Rr*irq - (wge-p*wm)*frd);
    yp(5) = (tm - (TL + KD*wm)) / J;
    yp(6) = wge;

    yp = yp';

    I'd like to save vsd and vsq values of every round in a matrix or in someway!
     
  2. jcsd
  3. Oct 3, 2007 #2

    J77

    User Avatar

    You could always write you own one-line (fixed step-size) RK4 code.
     
  4. Oct 4, 2007 #3
    Ok, now I created an index inside the subfunction in this way:

    i=0;
    if t ~= 0
    load('i');
    end
    i=i+1;
    save('i');

    Now there is another problem:

    I'm wondering if this procedure could affects the simulation time returning me wrong values
     
  5. Jul 13, 2011 #4
    Hey i need help in ODE45 too

    i have the following code

    >>for i=1:5
    >>tspan=[0 30]
    >>h0=Hv(i)
    >>[t,h]=ode45['a ODEfunction',tspan,h0]
    >>plot(t,h)
    >>end

    in this loop how can i save 5 values of [t,h],
    as t, h produces each loop run like follows
    t=
    1
    2
    3
    4
    .
    .
    .
    h=
    5
    6
    7
    8..

    also i need to plot all of them n i could view the 5 graphs them..pls help..
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Need help for ODE45 matlab
  1. Ode45 help in MATLAB (Replies: 0)

Loading...