【问题标题】:How to store results created into a cell array during a multiple for loop into a 3d array? In Matlab如何将在多个 for 循环期间创建的单元格数组中的结果存储到 3d 数组中?在 Matlab 中
【发布时间】:2015-08-09 10:52:59
【问题描述】:

在 Matlab 中,在三个不同的 for 循环(对于 a=1:240,b=1:5 和 c=1:3)结束时,我生成了一个 {1,3} 元胞数组,其中每个元胞包含一个(1,5) 数组,仅报告 240 次迭代的最后一个结果。 除了这个单元数组之外,我如何生成一个 (240,5,3) 3d 数组来存储每次迭代的结果? 或者,等价的,一个元胞数组,再次存储信息,然后将其转换为 (240,5,3) 3d 数组?

【问题讨论】:

  • 请发布一些示例数据(输入和工作输出)。另请阅读本文以了解如何索引元胞数组:stackoverflow.com/a/25621199/1011724
  • 是的,你是对的。假设我有: a=240; b=5; c=3; A {c}= cell (1,b) for i=1:a for j=1:b for k=1:c A{c}(b)= %assignment end end end 其中 %assignment 是一系列操作通过 a、b、c。现在,在这个循环结束时,我只获得 A{c}(b),而我还想获得 A (a,b,c) 以及在 a,b,c 上的每次迭代的部分结果。
  • 请将您评论中的代码放在您的实际问题中,在评论中很难阅读
  • 这个问题不清楚。为什么只存储最后的结果?为什么是 {1,3} 单元格?究竟存储了什么,一个标量?如果是这样,答案就变得很简单,但问题仍然很复杂,可能对其他人没有帮助。

标签: matlab multidimensional-array cell-array


【解决方案1】:

代码如下:

%// Size of the problem
Na = 240;
Nb = 5;
Nc = 3;

%// Allocate empty cell array
result = cell(Na, Nb, Nc);

%// Loop
for a = 1:Na
        for b = 1:Nb
                for c = 1:Nc
                        %// Here is the code for computing the
                        %// result x of the last iteration.

                        result{a,b,c} = x;
                end;
        end;
end;

【讨论】:

    猜你喜欢
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多