2

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

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

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

4

1 回答 1

3

您可以创建一个返回函数句柄的函数:

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

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

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

灵感来自gnovice的回答here

于 2016-02-24T09:04:55.473 回答