フィルターのクリア

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 Center および File ExchangeTables についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by