2017-07-07 169 views
-1

如何從MATLAB中的第一個單元格陣列中刪除共同元素?
例如:如何從MATLAB中的第一個單元陣列中刪除共同元素?

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

甲& B是兩個單元陣列。我想找到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

我寫了一個小功能A當和B都是向量的工作原理:

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 
相關問題