And*_*dyK 4 matlab real-time ode
假设我们有一阶 ODE 系统有以下求解器:
% func.m
function dydt = func(t,y)
dydt = [y(2); (1-y(1)^2)*y(2)-y(1)];
Run Code Online (Sandbox Code Playgroud)
和主要代码:
% solver.m
tspan=0:1:10;
[t,y] = ode45(@func,tspan,[2; 0]);
Run Code Online (Sandbox Code Playgroud)
如何实时显示 ode45 执行的每个时间步 t (t=0,1,2,...,10) 的结果 y1(t) 和 y2(t),而无需等待整个过程代码要完成吗?
OutputFcn应使用 ode 求解器选项。odeplot例如,要绘制解与时间的关系图,可以使用内置输出函数:
options= odeset('OutputFcn',@odeplot);
[t,y] = ode45(@func,[0 200],[2; 0],options);
Run Code Online (Sandbox Code Playgroud)
您可以使用自己的输出函数。这是一个例子:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2301 次 |
| 最近记录: |