6

AとBの2つの行列:

A = [1 2 3
     9 7 5
     4 9 4
     1 4 7]

B = [1 2 3
     1 4 7]

行列Bのすべての行は行列Aのメンバーです。ソートせずにAとBの共通の行をAから削除したいと思います。

setdiff()を試しましたが、これで出力がソートされます。

私の特定の問題(タンパク質構造の原子座標)では、行の順序付けられた整合性を維持することが重要です。

4

2 に答える 2

10

ISMEMBERを使用します:

%# find rows in A that are also in B
commonRows = ismember(A,B,'rows');

%# remove those rows
A(commonRows,:) = [];
于 2010-08-12T12:37:38.043 に答える
1

データを並べ替えずに、2つの配列の間に差分を作成する必要がありました。私はこの素晴らしいオプションをmatlabドキュメントで見つけました。Setdiff関数

関数の定義は次の[C,ia] = setdiff(___,setOrder) とおりです。出力データをソートしたくない場合は、「stable」を使用します。それ以外の場合は、「sorted」またはパラメーターなしを使用します。

これが私のユースケースです。

yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;
于 2016-03-26T22:13:13.637 に答える