【问题标题】:storing and accessing with matrices of more than two dimensions存储和访问多于二维的矩阵
【发布时间】:2015-10-16 17:52:13
【问题描述】:

我正在使用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) 的最后一个值,我会使用什么代码?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    可以像通常的行和列维度一样访问更高的维度。假设t 是 Nx1,y 是 Nx4,并且我们正在运行 M 次试验(请注意,每个试验必须具有相同的点数 N,以便将数据存储在 3 维数组中)。

    您的数组 my_t_results 不必是 3 维的,可以只是 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);

    【讨论】:

    • 请注意,您也不限于 3 个维度!
    猜你喜欢
    • 2017-10-11
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    相关资源
    最近更新 更多