MATLABでソートすることなく、セットAとBの交差点をAとBの交点を削除するにはどうすればよいですか?
-
28-09-2019 - |
質問
2つのマトリックス、AとB:
A = [1 2 3
9 7 5
4 9 4
1 4 7]
B = [1 2 3
1 4 7]
マトリックスBのすべての行はマトリックスAのメンバーです。AとBの一般的な行を並べ替えずに削除したいと思います。
setdiff()を試しましたが、これは出力を並べ替えます。
私の特定の問題(タンパク質構造における原子座標)では、並べ式の順序が維持されることが重要です。
解決
使用する ismember:
%# find rows in A that are also in B
commonRows = ismember(A,B,'rows');
%# remove those rows
A(commonRows,:) = [];
他のヒント
データを並べ替えることなく、2つの配列間にdiffを作成する必要がありました。 Matlab Docsでこの素晴らしいオプションを見つけました。 SetDiff関数
これが機能の定義です [C,ia] = setdiff(___,setOrder)
出力データのソート付き「Stable」を使用して「Stable」を使用しないか、パラメーターを使用しないようにします。
これが私のユースケースでした。
yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;
所属していません StackOverflow