此外(这是在游戏中很晚才增加,但这让我感到沮丧).这是一个嵌套函数的解决方案:
function [ dealfunchandle ] = dealwithit( arrayfunc )
% Takes as input an event function of (t,z) that returns a 3 array (in same order as event syntax).
function [a, b, c] = dealfunc(t,z)
output = arrayfunc(t,z);
a = output(:,1);
b = output(:,2);
c = output(:,3);
end
dealfunchandle = @dealfunc;
end
此函数只需编写一次(如果必须使用许多不同的事件函数,则很方便).这可用于在代码中生成匿名事件函数,如下所示:
arrayfunc = @(t,y) [y(1), 0, 1];
events = dealwithit(arrayfunc);
opts = odeset('Events', events);
然后按照正常情况ode45.