When you pass in a tspan that has two elements then ode45 will automatically pick times to evaluate at as needed to maintain accuracy.
You can pass a vector of times instead. ode45 will output for those times. It will continue to evaluate at whichever points it wants to maintain accuracy, but it will calculate for the times given and report only for those.
Because the axes is getting "full" - not quite sure how else to describe it. Put the command "cla" before the call to imellipse and you'll see the times stay short no matter how many times you call it.
Best Answer