Info
この質問は閉じられています。 編集または回答するには再度開いてください。
I have a matrix with values from -180 to 180 and i want to find all the places where each value is and then save them in a new matrix, how can i do it?
1 回表示 (過去 30 日間)
古いコメントを表示
I want to create a for loop that goes for values -180:1:180 and finds all the locations(i,j) for each value. e.g i want to find all the locations for value -180 and then save them in a new matrix. is it possible to be done? i wrote here the code for the loop function and it works but i dont know how to save the values so as to know which location is for each value.
for a= 180:-1:-180
[i,j]=find(ORIENT==a)
end
0 件のコメント
回答 (2 件)
mbonus
2016 年 9 月 12 日
Is this what you're looking for?
Result = [];
for a = -180:180
[ind1,ind2] = find(ORIENT == a);
Result(a,1) = ind1;%save the row number to row a
Result(a,2) = ind2;%save the column number to row a
try
Result(a,3) = ORIENT(ind1,ind2);%save the value for the indices ind1&ind2
catch
Result(a,3) = NaN;%save NaN if there is no corresponding value for the indices
end
end
2 件のコメント
mbonus
2016 年 9 月 13 日
Are you getting multiple values returned for each index in the find? I assumed that there was only one of each value in the matrix ORIENT. Do you want every i in a single matrix and every j in a single matrix? if so I would suggest a cell array because that allows you to have different column or row lengths if there is an unknown number of each value of a in the matrix ORIENT
Star Strider
2016 年 9 月 12 日
Since ‘a’ is a vector, ‘j’ will always be 1. So forget about the loop and just calculate them directly:
i = 1:361;
a = 181 - i;
0 件のコメント
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!