我需要运行两个形状微分方程的交互式模拟:
der(x)= A * x + c1 * y
der(y)= c2 * x + c3 * y
其中der(x)是x
的时间导数但我需要能够在模拟实时运行时更改A
。
我是matlab的新手,但是我捅了一下所以我不是一个总菜刀
答案 0 :(得分:1)
我过去有两种方法可以做到这一点。根据您使用的是Matlab的ode
函数还是您自己的函数,不同的东西可能会更容易。
如果您正在实时绘制图形并使用自己的ODE求解器,则可以在一个时间步长运行求解器,绘制结果并使用keyPressFcn
修改参数。这是我首选的方法,它的工作原理如下:首先打开你的图窗口
figHandle = figure('KeyPressFcn',@keyControl);
然后运行你的ODE求解器,一次一个步骤并绘制结果。 keyControl
函数如下所示:
function keyControl(varargin)
cmd = get(figHandle,'CurrentCharacter');
switch double(cmd)
case 30 % up arrow for example
end
end
如果您使用的是Matlab ODE求解器,则可以使用OutputFcn
修改某些数据(尽管这可能有点笨拙)。