필터 지우기
필터 지우기

Elements of a vector whose difference is minimum?

조회 수: 2 (최근 30일)
Marco Bakker
Marco Bakker 2016년 10월 6일
편집: Matt J 2016년 10월 6일
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