私はベクターを持っています。 A=[2.29 2.56 2.67 2.44 2.52 1.23]
MATLABのベクトル内で最も近い(最も近い)2つの値を見つけるにはどうすればよいですか?
私は、このベクトルに2つの最も近い(ほぼ等しい)値を見つけることに興味があります。
私はベクターを持っています。 A=[2.29 2.56 2.67 2.44 2.52 1.23]
MATLABのベクトル内で最も近い(最も近い)2つの値を見つけるにはどうすればよいですか?
私は、このベクトルに2つの最も近い(ほぼ等しい)値を見つけることに興味があります。
ワンライナーでソリューション
res = A(repmat(find(abs(diff(A))==min(abs(diff(A)))),2,1)+[0;1]);
よりわかりやすいソリューション
%finds the index with the minimal difference in A
minDiffInd = find(abs(diff(A))==min(abs(diff(A))));
%extract this index, and it's neighbor index from A
val1 = A(minDiffInd);
val2 = A(minDiffInd+1);
結果:
val1 = 2.4400
val2 = 2.5200
pdist()を使用できます。
としてpdist(A,A)
これに 'stats'ツールボックスが必要であることを付け加えてください。 –
pdistも動作するかもしれませんが、時間の点でコストがかかるようです。 – erbal
明確にするために、2つの最も近い隣接値、または位置に関係なく最も近い2つの値に興味がありますか? – RTL
@RTL:位置に関係なく、2つの最も近い値。 – erbal