我想将数据存储在矩阵(不是单元格)中的双循环中。 我尝试了下面的代码(这里的内部循环中使用的函数只是一个例子)。
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
有关如何将数据存储在矩阵中的任何帮助?我想这很容易,但我没有到达那里
答案 0 :(得分:2)
您的代码存在一些问题:
1 /您将valuesforOPratio
定义为41x1
向量。但是,在内部嵌套循环中,下标OPratio
从30到70,这意味着当您编写valuesforOPratio(OPratio)=NPVtotal;
时,valuesforOPratio
向量的大小将增加到70。
要纠正这个问题,您可能想要:
OPratio
下标从1到41(即for OPratio=1:41 ...
)valuesforOPratio(OPratio-29)=NPVtotal;
) 2 /当你写valuesforM(M)=valuesforOPratio
时,你试图将一个向量(valuesforOPratio
)放在一个标量元素(valuesforM(M)
)中。
要解决此问题,您只需指定希望valuesforM
的整列填充valuesforOPratio
中的值,即:
valuesforM(:,M-39)=valuesforOPratio;
答案 1 :(得分:0)
您的valuesforM
是一个41乘61的矩阵。如果你想写一行或一个列,你应该valuesforM(M:) = valuesforOPratio
或valuesforM(:M) = valuesforOPratio
我的计算机上没有MATLAB来检查我的答案,但它应该可以帮助你找到解决方案。