-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