我正在使用ode45
来解决具有4个变量的系统。每次我执行代码:
[t y] = ode45(@func, tspan, y0);
t
将是一维矩阵,而y
将是一个二维矩阵,有4列,每列都是其中一个变量的解决方案。
我想对此进行多次试验,并将它们保存在3D矩阵my_y_results
和my_t_results
中。例如,我希望能够为特定的初始条件绘制某个变量的最终值,因为我改变了初始条件。我该怎么做?
因此,在下面循环的每次迭代中,我想将新值放在一个新矩阵中。
for i = 1:1:10
y0 = **some value**
[t_temp, y_temp] = ode45(@func, tspan, y0);
my_t_results = **something**
my_y_results = *something* //your code here
end
另外,设置后如何访问不同的值?例如,要获取10个试验中每个试验的变量y(1)的最后一个值,我会使用什么代码?
答案 0 :(得分:3)
可以访问更高的尺寸,类似于通常的行和列尺寸。我们假设t
为Nx1且y
为Nx4,并且我们正在运行M次试验(请注意,每次试验必须具有相同的点数N,以便存储三维数组中的数据。)
您的数组my_t_results
不一定是三维的,只能是NxM,其中每列是不同试验的时间向量。
数组my_y_results
为Nx4xM,可以在MATLAB中定义:
my_y_results = zeros(N,4,M);
在每个第i次试验结束时,您都会将结果存储起来:
my_y_results(:,:,i) = y;
当然,访问数据是类似的:
y_i = my_y_results(:,:,i);