为什么 Matlab 不将循环的部分结果保存在元胞数组中?
Why Matlab does not save the partial results of my loop in a cell array?
我的代码是这样的:
for i=1:n
a=something;
b=something;
c=cell(n,1);
c{i,1}=[a b];
end
其中a和b都是1x3矩阵。当我执行循环时,Matlab 仅将最后一次迭代的结果保存在最后一个单元格中。
我究竟做错了什么?因为如果我删除预分配它会起作用,但会将结果存储在 1xn 元胞数组中,而我希望将它们存储在 nx1 元胞数组中。
P.S。如果有更多 efficient/fast 方法来做这样的事情而不是使用 for 循环,那么解决方案将非常受欢迎。
将元胞数组的预分配移到循环外:
c=cell(n,1);
for i=1:n
a=something;
b=something;
c{i,1}=[a b];
end
按照您的方式,您将覆盖您在每次循环迭代中保存的内容。
我的代码是这样的:
for i=1:n
a=something;
b=something;
c=cell(n,1);
c{i,1}=[a b];
end
其中a和b都是1x3矩阵。当我执行循环时,Matlab 仅将最后一次迭代的结果保存在最后一个单元格中。 我究竟做错了什么?因为如果我删除预分配它会起作用,但会将结果存储在 1xn 元胞数组中,而我希望将它们存储在 nx1 元胞数组中。 P.S。如果有更多 efficient/fast 方法来做这样的事情而不是使用 for 循环,那么解决方案将非常受欢迎。
将元胞数组的预分配移到循环外:
c=cell(n,1);
for i=1:n
a=something;
b=something;
c{i,1}=[a b];
end
按照您的方式,您将覆盖您在每次循环迭代中保存的内容。