How do I incrementize ode solver outputs after solution?

I'm trying to take ode45 output and adjust it so the independent variable (time in this instance) has consistent increments e.g. make the step sizes 1 second instead of being all over the place as they are. What I have so far is that I know there an intersection calculator so I was thinking I could use a loop to place a line at each second mark and figure the intersection from that. Doing so is a really round about and messy way; I don't like it. I want to perform this incrementization post-solve so that I don't damage my solution. Is there an effecient way of doing this?

 Accepted Answer

You could specify the tspan input to the ODE solver as 0:yourEndingTime. If you do this the solver will return the value of the solution at the specified times. [Internally it will use whatever timesteps it needs to solve the problem to the appropriate precision, but it will then return the value of the solution at those time steps.]
If you do need to solve this after solving with a tspan input that consists of just the starting and ending time, pass the solution structure returned by the ODE solver into deval.

1 Comment

So for example, if I wanted to produce a solution at every second of a minute I would have tspan = 0:1:60?
I didn't know about the deval function though. That certainly will come in handy.

Sign in to comment.

More Answers (0)

Tags

Asked:

on 24 Jun 2019

Edited:

on 24 Jun 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!