Elements of a vector whose difference is minimum?

2 次查看(过去 30 天)
Is it possible to find the elements of a vector whose difference is minimum?

采纳的回答

Matt J
Matt J 2016-10-6
编辑:Matt J 2016-10-6
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 个评论
LauraLee Austin
LauraLee Austin 2016-10-6
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(:)));

请先登录,再进行评论。

更多回答(1 个)

Matt J
Matt J 2016-10-6
编辑:Matt J 2016-10-6
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.

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by