-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之间的共同元素。我该怎么做?
如何从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之间的共同元素。我该怎么做?
我写了一个小功能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
将任何在您的电池阵列,这些元素永远是浮动点数?如果是这样,那么由于浮点精度的原因,由于精确的相等性不能得到保证,元件可能会存在潜在的危险。 – rayryeng
如果数组包含单个元素(数字/字符串),则可以使用[setdiff(A,B)](http://in.mathworks.com/help/matlab/ref/setdiff.html)。 – ABcDexter
单元阵列的元素是一个整数的randperm。 – Bahar