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?
2 次查看(过去 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!