存储和访问两个以上维度的矩阵

时间:2015-10-16 09:29:26

标签: matlab matrix

我正在使用ode45来解决具有4个变量的系统。每次我执行代码:

[t y] = ode45(@func, tspan, y0);

t将是一维矩阵,而y将是一个二维矩阵,有4列,每列都是其中一个变量的解决方案。

我想对此进行多次试验,并将它们保存在3D矩阵my_y_resultsmy_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)的最后一个值,我会使用什么代码?

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);