2017-07-07 10 views
-1

2つのセル配列間の共通要素をMATLABの最初の配列から削除するにはどうすればよいですか?例えば
2つのセル配列間の共通要素をMATLABの最初の配列から削除する方法は?

A={[1 3 2],[2 3 1],[3 1 2]} & B={[1 3 2],[3 2 1]} 

& Bは、2つのセル配列です。私はA-Bを探したい。この目的のためにAからA & Bの共通要素を削除したいのですが、どうすればいいですか?

+1

はあなたのセル配列におけるこれらの要素のいずれかがこれまでに浮いてますがポイント数?もしそうであれば、浮動小数点精度のために等価性が保証されないので、要素が残る可能性があるという潜在的な危険性があります。 – rayryeng

+0

配列に単一要素(数値/文字列)が含まれている場合は、[setdiff(A、B)](http://in.mathworks.com/help/matlab/ref/setdiff.html)を使用できます。 – ABcDexter

+0

セル配列の要素は整数のrandpermです。 – Bahar

答えて

2

私はABの両方がベクトルのときに動作小さな機能を書いた:あなたの定義された入力を備えた

function A = celldiff(A, B) 
for ii = 1:length(B) 
    inA = arrayfun(@(x) isequal(A{x}, B{ii}), 1:length(A)); 
    A = A(~inA); 
end 
end 

例:

>> A={[1 3 2],[2 3 1],[3 1 2]}; 
>> B={[1 3 2],[3 2 1]}; 
>> C = celldiff(A, B); 
>> C{:} 
ans = 
    2  3  1 
ans = 
    3  1  2 
関連する問題