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()を試しましたが、これで出力がソートされます。
私の特定の問題(タンパク質構造の原子座標)では、行の順序付けられた整合性を維持することが重要です。
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()を試しましたが、これで出力がソートされます。
私の特定の問題(タンパク質構造の原子座標)では、行の順序付けられた整合性を維持することが重要です。
ISMEMBERを使用します:
%# find rows in A that are also in B
commonRows = ismember(A,B,'rows');
%# remove those rows
A(commonRows,:) = [];
データを並べ替えずに、2つの配列の間に差分を作成する必要がありました。私はこの素晴らしいオプションをmatlabドキュメントで見つけました。Setdiff関数
関数の定義は次の[C,ia] = setdiff(___,setOrder)
とおりです。出力データをソートしたくない場合は、「stable」を使用します。それ以外の場合は、「sorted」またはパラメーターなしを使用します。
これが私のユースケースです。
yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;