我有一个使用 ODE45 解决一些方程的类函数。我还有另一个私有类函数,它代表 ODE45 需要解决的 odefunction。但是,我不知道如何将类的 ode 函数的句柄传递给 ODE45。这是示例代码:
class ODESolver < handle
methods (Access = public)
function obj = RunODE(obj, t, y0)
[~, Z] = ode45(@ODEFunction, t, y0);
end
end
methods (Access = private)
function dy = ODEFunction(t,y)
% Calculate dy here.
end
end
end
当我运行它时,我收到一条错误消息:
Undefined function 'ODEFunction' for input arguments of type 'double'.
如果我将 ODEFunction 移出类并将其放入自己的 *.m 文件中,则代码运行良好。我也试过在 ode45 调用中使用“@obj.ODEFunction”,但它说:
Too many input arguments.
将 ODEFunction 保留在我的班级中并且仍然能够将其句柄传递给 ode45 的最佳方法是什么?