我想存储一个在 for 循环的每次迭代中改变其大小的数组。例如,
for y=1:100
for x=1:50
.
.
ms(:,x,y) = ans;
.
.
end
end
“ans”是一个行向量,它在 y 的每次迭代中改变其大小。
如何将这些可变长度“ans”存储到 ms 中?
当我尝试将“ms”初始化为单元格时,它会显示一条错误消息,提示“无法从 double 转换为单元格”。
我有什么方法可以解决这个问题?
谢谢亲切的问候
我想存储一个在 for 循环的每次迭代中改变其大小的数组。例如,
for y=1:100
for x=1:50
.
.
ms(:,x,y) = ans;
.
.
end
end
“ans”是一个行向量,它在 y 的每次迭代中改变其大小。
如何将这些可变长度“ans”存储到 ms 中?
当我尝试将“ms”初始化为单元格时,它会显示一条错误消息,提示“无法从 double 转换为单元格”。
我有什么方法可以解决这个问题?
谢谢亲切的问候
一种方法:
ms = {};
for y=1:100
for x=1:50
ms = [ms 1:x];
% or
% ms = [ms new_cell_element];
end
end
您还可以索引单元格数组,不需要ms{x,y} = 1:3;
new_cell_element
是单元格,它可以是您想要的任何内容。
ms = [ms, 'A string', (1:5).'] %// Works!
请注意,我不推荐这样做,而且我很确定还有其他方法可以做到这一点,具体取决于您想要在这些嵌套循环中执行的操作。您应该检查一下cellfun
,然后cells
大体上阅读。
此外,永远不要ans
在 MATLAB 中用作变量名。那只会给你带来麻烦。任何其他名称都更好(clear
and除外builtin
)。
我能想到的唯一方法是确实使用单元阵列。像这样初始化一个二维元胞数组:
ms = cell(50,100);
之后,您使用花括号 ( {}
) 对单元格进行索引。因此,您的循环将如下所示:
for y=1:100
for x=1:50
.
.
ms{x,y} = ans;
.
.
end
end
完成后,您可以通过选择所需的行和列位置来索引元胞数组:
vec = ms{row,col};
顺便说一句,我不建议您将ans
其用作变量。 ans
是当您在 MATLAB 中执行具有输出的语句时使用的默认变量,并且您没有指定函数的此输出将去往何处的变量。您可能有会覆盖该ans
变量的代码,因此您或许应该使用另一个名称。