【问题标题】:Why Matlab does not save the partial results of my loop in a cell array?为什么 Matlab 不将循环的部分结果保存在单元格数组中?
【发布时间】:2015-10-11 00:42:15
【问题描述】:

我的代码是这样的:

for i=1:n
   a=something;
   b=something;

   c=cell(n,1);
   c{i,1}=[a b];
end

其中 a 和 b 都是 1x3 矩阵。当我执行循环时,Matlab 仅将最后一次迭代的结果保存在最后一个单元格中。 我究竟做错了什么?因为如果我删除预分配,它会起作用,但会将结果存储在 1xn 单元格数组中,而我希望它们在 nx1 单元格数组中。 附言如果有一种更有效/更快的方式来做这样的事情而不是使用 for 循环,那么该解决方案将非常受欢迎。

【问题讨论】:

  • 您在循环中每次都重新创建您的元胞数组 c。您可以通过调试并查看 c=cell(n,1); 正在做什么来找出答案。为什么不把初始化移到循环之外呢?

标签: matlab for-loop cell-array


【解决方案1】:

将元胞数组的预分配移到循环外:

c=cell(n,1);
for i=1:n
   a=something;
   b=something;

   c{i,1}=[a b];
end

按照您的方式,您正在覆盖每次循环迭代时保存的内容。

【讨论】:

  • 是的,这是错误的!非常感谢
猜你喜欢
  • 2016-08-30
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2017-08-06
  • 2022-01-20
  • 2015-08-09
  • 1970-01-01
相关资源
最近更新 更多