2017-07-07 170 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 
相关问题