【问题标题】:Save matrix in for loop matlab在for循环matlab中保存矩阵
【发布时间】:2013-09-16 16:03:13
【问题描述】:

我有以下代码:

for c=1:10;
D = maximin(n2,n1,'euclidean');
M = min(D,[],2); ;
C=[D M]; 
[maxValue, rowIdx] = max(C(:,end),[],1); %max value and the row index
n1(end+1,:) = n2(rowIdx,:); %Copy selected row to bottom of n1
n2(rowIdx,:) = []; %Delete the row from n2 that has the maximin
c=c+1;
end

n1 为 50*80,n2 为 100*80 在第一次迭代结束时,n1=51*80 和 n2=49*80 以此类推。我需要在每次迭代结束时保存 n1,以便我可以使用 n1(1) ... n1(10) 进行进一步计算。请帮忙。我尝试了以下

B = cell(1, c); B(n) = n1(1, c+1); and
B{n} = n1; 

没有帮助。非常感谢任何帮助。

谢谢

【问题讨论】:

  • 您收到了什么错误信息?您将第二段代码放在循环中的哪个位置?
  • 我把它放在“c=c+1”语句的正上方。使用 B{n}. 时我没有收到错误,而是得到一个 1* 10 矩阵,其中每个单元格由 n 个(n1..n10 在 10 个单元格中)组成。它就像整个 n1 矩阵在 B{n} 的一个单元格中

标签: matlab for-loop


【解决方案1】:

您应该在循环之前预先分配B,如下所示:

B = cell(10, 1);

在循环的每次迭代中,您将 n1 存储在 B 中,如下所示:

B{c} = n1;

然后您可以访问n1,使用相同的语法计算任何迭代。例如,第三次迭代计算的矩阵n1B{3}

【讨论】:

  • 太完美了!非常感谢
  • 对不起,这不让我投票 :( 我有另一个外部循环 k=50,100 和 150。我为 k =50,100.150 生成了 10 个值。是否可以表示 B{c}{k} ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
相关资源
最近更新 更多