Matlab - 存储嵌套循环中的数据

时间:2016-05-19 07:57:25

标签: matlab loops

我想将数据存储在矩阵(不是单元格)中的双循环中。 我尝试了下面的代码(这里的内部循环中使用的函数只是一个例子)。

valuesforOPratio = zeros(41,1);
valuesforM = zeros(41,61);
NPVtotal=1;
for M = 40:100
for OPratio = 30:70;
NPVtotal = NPVtotal+1
valuesforOPratio(OPratio)=NPVtotal;
end
valuesforM(M) = valuesforOPratio
end
I get the following error:

 In an assignment  A(:) = B, the number of elements in A and B must be the same.

Error in sensitivity_opratio (line 10)
valuesforM(M) = valuesforOPratio

有关如何将数据存储在矩阵中的任何帮助?我想这很容易,但我没有到达那里

2 个答案:

答案 0 :(得分:2)

您的代码存在一些问题:

1 /您将valuesforOPratio定义为41x1向量。但是,在内部嵌套循环中,下标OPratio从30到70,这意味着当您编写valuesforOPratio(OPratio)=NPVtotal;时,valuesforOPratio向量的大小将增加到70。

要纠正这个问题,您可能想要:

  1. 让您的OPratio下标从1到41(即for OPratio=1:41 ...
  2. 在上面提到的呼叫中设置右下标(即valuesforOPratio(OPratio-29)=NPVtotal;
  3. 2 /当你写valuesforM(M)=valuesforOPratio时,你试图将一个向量(valuesforOPratio)放在一个标量元素(valuesforM(M))中。

    要解决此问题,您只需指定希望valuesforM整列填充valuesforOPratio中的值,即:

    valuesforM(:,M-39)=valuesforOPratio;

答案 1 :(得分:0)

您的valuesforM是一个41乘61的矩阵。如果你想写一行或一个列,你应该valuesforM(M:) = valuesforOPratiovaluesforM(:M) = valuesforOPratio

我的计算机上没有MATLAB来检查我的答案,但它应该可以帮助你找到解决方案。