如何从MATLAB中的第一个单元格数组中删除两个单元格数组之间的公共元素?

时间:2017-07-07 06:34:58

标签: matlab

如何从MATLAB中的第一个单元格数组中删除两个单元格数组之间的公共元素? 例如:

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

A& B是两个单元阵列。我想找到A-B。为此我想删除A& A之间的共同元素。来自A的B.我怎么能这样做?

1 个答案:

答案 0 :(得分: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