ode45函数文件的输入矩阵

Input matrix to function file of ode45

我有一个代码(需要用户提供大量输入),它会给我一个 n x n 矩阵(比如 A),我必须用它来求解 ODE 系统 X'=AX。如何将此矩阵 A 包含在 ode45 的函数文件(.m 文件)中。如果我在函数文件中包含如下代码:

function xp=g_test(t,x);
k=input('something');
A=some manipulation of inputs;
xp=A*x;
end

Matlab 在每个时间步都要求输入(通常我的问题有 30k 个时间步)。那么如何将矩阵 A 包含/传递给函数?

您可以创建一个函数 returns a function handle:

function odeFcn = makeODE(a,b,c)  
    A = some_function(a, b, c);
    odeFcn = @(t,x) A*x;
end

现在您可以使用输入矩阵 a, b, c:

调用 ode45
outputVector = ode45(makeODE(a,b,c), [t0, t1], x0);

灵感来源于gnovice的回答here