Nearest Neighbor Matching without Replacement
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello there,
I am looking to match data in two vectors, x and y, based on shortest Euclidean distance. Each match should be unique; that is, numbers in vectors x and y cannot be matched twice. I have looked into knnsearch, but have not found anything that suggests the function works without replacement. Thank you!
3 Kommentare
Phillip
am 30 Mär. 2018
It does not violate the shortest distance if it is removed from the set once matched (what Al is referring too when he says " without Replacement").
Peng Li
am 31 Mär. 2020
any update here? also was wondering if there is a way to do knn search without replacement.
Antworten (2)
neuroDuck
am 25 Feb. 2022
A late response, but for anyone that might come across this in future, I think a brute force approach should work, with the following code, assuming you don't have too many comparisons to go through:
[cIdx] = unique(knnsearch(x,y));
% brute force knnsearch to do without replacements
startingK = 2;
while length(cIdx)<length(y)
[cIdx] = unique(knnsearch(x,y,'k',startingK));
startingK = startingK + 1;
end
0 Kommentare
Bruno Luong
am 25 Feb. 2022
If you have R2019a release
x=rand(1,10)
y=rand(1,10)
C=abs(x(:)-y(:).');
M = matchpairs(C,max(C(:)));
px = M(:,1);
xm = x(px)
d = abs(xm-y)
0 Kommentare
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!