How to display Matlab's ode45 results in real time?
matlab, ode, real-time
Solution
The `OutputFcn` ode solver option should be used. For example, to plot the solution vs time, the built-in output function `odeplot` can be used:
options= odeset('OutputFcn',@odeplot);
[t,y] = ode45(@func,[0 200],[2; 0],options);
You can use your own output function. Here is an example:
myOutputFcn= @(t,y,flag)fprintf('t= %s y= %s\n',mat2str(t),mat2str(y))*0;
options= odeset('OutputFcn',myOutputFcn);
[t,y] = ode45(@f,0:1:10,[2; 0],options);
Problem
Let's suppose that we have the following solver for a system of first-order ODEs: ``` % func.m function dydt = func(t,y) dydt = [y(2); (1-y(1)^2)*y(2)-y(1)]; ``` and the main code: ``` % solver.m tspan=0:1:10; [t,y] = ode45(@func,tspan,[2; 0]); ``` How to display in real-time the results, y1(t) and y2(t), for each time step t that the ode45 makes (t=0,1,2,...,10), without waiting for the whole code to finish?