输入矩阵到ode45的函数文件

时间:2016-02-24 08:46:44

标签: matlab function ode ode45

我有一个代码(需要用户提供很多输入),这将给我一个n×n矩阵(比如说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包含/传递给函数?

1 个答案:

答案 0 :(得分:3)

您可以创建一个返回function handle

的函数
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