MATLABでソートすることなく、セットAとBの交差点をAとBの交点を削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3467670

  •  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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top