Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中从第一个单元阵列中删除两个单元阵列之间的公共元素?_Matlab - Fatal编程技术网

如何在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

如何在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) 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将变为空,对吗?