How to exempt an index of an array from a loop after each iteration?
1 次查看(过去 30 天)
显示 更早的评论
I have two arrays called array and newarray. Both are of size N X sz. The first column of array is the first column of newarray. I have a loop that goes through each value of array looking at each row of each column (2nd column onwards), and it finds the value (index) from the previous column which is closest. The code is below. However, some of the values in the columns are the same and I do not want an index from the previous column to be matched more than once. How do I exempt an index from being chosen again if it already has a match from the previous iteration?
newarray(1:N,1) = array(1:N,1);
for j = 1:1:sz-1
for s = 1:1:N
BestDistance = 10;
A = newarray(s,j);
for k = 1:1:N
B = array(k,j+1);
Distance = abs(B-A);
if Distance < BestDistance
BestDistance = Distance;
BestMatch = k ;
%If the index k has already been matched previously, I want it to be exempt from being chosen again
end
end
newarray(s,j+1)=array(BestMatch,j+1);
end
end
0 个评论
回答(1 个)
Star Strider
2017-1-14
Without actually having both ‘array’ and ‘newarray’, it’s not possible to write specific code.
See if the find, ismember (or ismembertol) functions will do what you want.
10 个评论
Star Strider
2017-1-14
My pleasure.
Now I’m completely confused. I have no idea how the distances and indices interact.
I’m happy you got this sorted. You have a good weekend, too.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!