在 ODE45 中将数据作为参数传递

计算科学 matlab 数字
2021-11-29 11:56:37

我需要从文件中导入数据以描述网络的结构。我使用了以下内容:

weights = readtable('weights192.txt');
W = weights{:,:};

现在,我需要在下面的函数 ode 中使用矩阵 W(它的元素,它的大小)。如何传递矩阵或仅传递 ode45 中参数所需的元素,以便我的函数可以访问它?

time = 0:0.01:5;
y0 = zeros(16,1);
[t,y] = ode45(@ode,time,y0);

function [dydt] = ode(t,y)
...
end

或者,是否可以直接在函数中导入矩阵及其数据?尽管出于代码结构的实际原因,我更愿意在功能之外选择我的网络结构。

1个回答

我认为传递与可能想要求解的微分方程或动力系统相关的数据的一种可能方法是使用这种格式,这不是初始条件或时间跨度:

[t,y] = ode45(@(t,y) ode(t,y,parameter_1,parameter_2,parameter_3,...), time, y0);