みんな。次の (3x3) 行列 A があるとします。
0 1 3
0 0 3
0 0 0
私の質問は、matlab を使用してその行列の一意の値を見つける方法です。この場合、結果は 1 になるはずです。
value=unique(A)
しかし、それはベクトル {0;1;3} を返しましたが、私が望むものではありません。
この問題の解決にご協力いただければ幸いです。ありがとうございました!
ここに短いものがあります
value = A(sum(bsxfun(@eq, A(:), A(:).'))==1);
行列内の要素のすべてのペアを比較し、それらが等しい回数をカウントし、1 回だけカウントされたものを返します。
これは1行の代替です:
find(histc(A(:), 0:3)==1) - 1
またはより一般的に:
find(histc(A(:), min(A(:)):max(A(:)))==1) + min(A(:)) - 1
または、さらに一般化する (フロートを処理する)
p = 0.1; %//Set a precision.
(find(histc(A(:), min(A(:)):p:max(A(:)))==1) + min(A(:)) - 1)*p