"Torsten" wrote in message <kb4a84$nsv$1@newscl01ah.mathworks.com>...
> "Qiming " <qzfyc@mst.edu> wrote in message <kb2p6s$kht$1@newscl01ah.mathworks.com>...
> > Hi:
> >
> > My question is how to retrieve a parameter value inside ode solver? Let's take the control system as an example. I write my own ODE function. Within the ODE function, I compute the control inputs as u=-K*x, where x is the system states and K is a constant matrix. x can be solved by calling ode solver, like ode45. But my question is, how can I get "u"?
> >
> > I know one solution is that after running the ode solver, then I can write a for loop, like:
> > for i = 1 : length(x)
> > u(i) = -K*x(i);
> > end
> >
> > Is there any way that I can retrieve u without using the for loop after running ode solver?
> >
> > Thanks.
>
> I'd do it the way you suggested (after running the ODE solver), except that you will have to put u=-K*x (the loop from above is incorrect).
>
> Best wishes
> Torsten.
Hi Torsten:
Thanks for your reply. I understand that's one way to retrieve the parameter inside ODE, however, for my real application, I generate a random value inside the ODEfunction. I cannot retrieve the parameter after running the ODE solver since I cannot get the exactly the same random value in my runfile.
I also tried using a counter inside the ODE solver. The weird thing is, the length of the counter is not the same as the length of the time step. How come this happens?
Thanks.
> "Qiming " <qzfyc@mst.edu> wrote in message <kb2p6s$kht$1@newscl01ah.mathworks.com>...
> > Hi:
> >
> > My question is how to retrieve a parameter value inside ode solver? Let's take the control system as an example. I write my own ODE function. Within the ODE function, I compute the control inputs as u=-K*x, where x is the system states and K is a constant matrix. x can be solved by calling ode solver, like ode45. But my question is, how can I get "u"?
> >
> > I know one solution is that after running the ode solver, then I can write a for loop, like:
> > for i = 1 : length(x)
> > u(i) = -K*x(i);
> > end
> >
> > Is there any way that I can retrieve u without using the for loop after running ode solver?
> >
> > Thanks.
>
> I'd do it the way you suggested (after running the ODE solver), except that you will have to put u=-K*x (the loop from above is incorrect).
>
> Best wishes
> Torsten.
Hi Torsten:
Thanks for your reply. I understand that's one way to retrieve the parameter inside ODE, however, for my real application, I generate a random value inside the ODEfunction. I cannot retrieve the parameter after running the ODE solver since I cannot get the exactly the same random value in my runfile.
I also tried using a counter inside the ODE solver. The weird thing is, the length of the counter is not the same as the length of the time step. How come this happens?
Thanks.