Euclidian distance showing different result for different formula
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
d = (query_feature' - train_feature').^2; % Eucledian distance
d_1 = sqrt(sum((query_feature' - train_feature') .^ 2))
The method with d is giving some error in retrieval, but when using d_1 it always give 100% accurate retrival (all retrieved images are similar as query image)
What can be wrong? Any suggestions appreciated.
2 Kommentare
Image Analyst
am 29 Dez. 2021
Bearbeitet: Image Analyst
am 29 Dez. 2021
Not sure what is wrong. Can you attach your data?
d is a list of the squared differences, while d_1 is the root mean square - a single number and a different thing. Not sure what you're expecting. The only way d or d_1 would be zero (meaning no differences and 100% accuracy) would be if query_feature exaclty equaled train_feature. Is that the case?
Antworten (2)
John D'Errico
am 29 Dez. 2021
What you write in d is simply not Euclidean distance What can be wrong? Your belief that it is so? What you write in d1 IS a Euclidean distance computation, so that it works should be no surprise.
Meg Noah
am 29 Dez. 2021
Some code - look at the sizes of the arrays to see why:
nsamples = 25;
ncomponents = 4;
s = RandStream('dsfmt19937','Seed',1123581321);
query_feature = rand(s,nsamples,ncomponents);
train_feature = rand(s,1,ncomponents);
% relative vector between query vectors and training vector
d = (query_feature' - train_feature').^2;
% Three ways to compute Eucledian distance between query vectors and a
% training vector
d_1 = sqrt(sum((query_feature' - train_feature') .^ 2))';
d_2 = sqrt(sum(bsxfun(@minus, query_feature, train_feature).^2,2));
d_3 = vecnorm((query_feature'-train_feature'),2)';
2 Kommentare
Meg Noah
am 29 Dez. 2021
The code snippet above creates the distances as vectors - arrays that are nsamples in rows and with one column. What matrix deimension is your code expecting?
Siehe auch
Kategorien
Mehr zu Filter Banks finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!