我有一个代码(需要用户提供很多输入),这将给我一个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包含/传递给函数?
答案 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。