Can looping values be used for indexing?
1 回表示 (過去 30 日間)
古いコメントを表示
Hello, I have a variation of the following code running but I am looking to make the code a bit more efficient by looping instead of defining a unique variable each time.
LPCsale = zeros(3,19);
finalpop = [5000,1,5000,0,5000,1];
LLPmatrix = finalpop(:,2:2:end);
LPClim= 20000;
LPCcost = 100000;
for LPCloop = 1:3
LPCsale(LLPmatrix(:,LPCloop)) = round(((LPClim-(finalpop(LLPmatrix(:,LPCloop),1)))/LPClim)*LPCcost)-LPCcost;
disp(LPCsale)
end
In the working code there are LPCsale1, LPCsale2 and LPCsale3 variables. The LPCloop value is replaced by 1,2, and 3 instead.
Is it possible to use a looping value like this to perform indexing? I am receiving this error message curently:
"Index in position 1 is invalid. Array indices must be positive integers or logical values"
I will need to expand the number of LPCsale values further so I would like a more efficient way to do this than having blocks and blocks of similar code.
Appreciate any advice!
0 件のコメント
採用された回答
James Tursa
2019 年 3 月 26 日
編集済み: James Tursa
2019 年 3 月 26 日
finalpop, and thus LLPmatrix, has a 0 value as one of its elements. You then use this as an index within the loop, which is causing the error.
3 件のコメント
James Tursa
2019 年 3 月 26 日
編集済み: James Tursa
2019 年 3 月 26 日
When I just copy and paste your code into MATLAB I get this error:
Index in position 1 is invalid. Array indices must be positive integers or logical values.
Then look at the current value of this expression, which you are using as an index:
>> LLPmatrix(:,LPCloop)
ans =
0
In fact, if you just look at the entire LLPmatrix you can see that it has a 0 element which will eventually cause the indexing error:
>> LLPmatrix
LLPmatrix =
1 0 1
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!