如何在MATLAB中从第一个单元阵列中删除两个单元阵列之间的公共元素?
如何在MATLAB中从第一个单元阵列中删除两个单元阵列之间的公共元素?如何在MATLAB中从第一个单元阵列中删除两个单元阵列之间的公共元素?,matlab,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和B之间的公共元素。我如何才能做到这一点 我编写了一个小函数,当a和B都是向量时,该函数可以工作: function A = celldiff(A, B) for ii = 1:length(B) inA = arrayfun(@(x) i
例如:
A={[1 3 2],[2 3 1],[3 1 2]} & B={[1 3 2],[3 2 1]}
A和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
单元格数组中的这些元素中是否有一个是浮点数?如果是,则存在一个潜在的危险,即元素可能会保留,因为由于浮点精度,无法保证精确相等。如果数组包含单个元素(数字/字符串),则可以使用。单元格数组的元素是整数的randperm。为了澄清这一点,你想比较向量集还是向量中的数字?如果是数字本身,A将变为空,对吗?