Effacer les filtres
Effacer les filtres

Elements of a vector whose difference is minimum?

2 vues (au cours des 30 derniers jours)
Marco Bakker
Marco Bakker le 6 Oct 2016
Modifié(e) : Matt J le 6 Oct 2016
Is it possible to find the elements of a vector whose difference is minimum?

Réponse acceptée

Matt J
Matt J le 6 Oct 2016
Modifié(e) : Matt J le 6 Oct 2016
If v is the given vector,
N=length(v);
G=abs(bsxfun(@minus,v(:),v(:).'));
G(1:N+1:end)=nan;
[i,j]=find(G==min(G(:)));
v(i), v(j)
  1 commentaire
LauraLee Austin
LauraLee Austin le 6 Oct 2016
Matt J, I like your approach, but it's missing a step which removes the difference of itself (i.e. element 2 minus element 2 equals 0)
G=abs(bsxfun(@minus,v(:),v(:).'));
a = 1:1+length(v):numel(G);
G(a) = NaN;
[i,j]=find(G==min(G(:)));

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 6 Oct 2016
Modifié(e) : Matt J le 6 Oct 2016
If v is the given vector,
N=length(v);
idx=nchoosek(1:N,2);
I=idx(:,1); J=idx(:,2);
D = abs( v(I) - v(J) );
imin = D==min(D);
v(I(imin)) , v( J(imin) )
Note that I, J can be re-used for further input vectors, v, that are the same length, N.

Catégories

En savoir plus sur Tables dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by