setdiff逐行而不使用matlab中的循环

时间:2015-09-10 06:07:32

标签: matlab matrix vectorization

假设我们有两个矩阵

A = [1,2,3;
     2,4,5;
     8,3,5]
B=  [2,3;
     4,5;
     8,5]

如何在不使用循环或cellfun的情况下分别为A和B中的每一行执行sediff,换句话说,对所有setdiff(A(i,:),B(i,:))执行i。对于这个例子,我想得到

[1;
 2;
 3]

我正在尝试为我的流体模拟器制作两个非常大的矩阵,因此我不能在性能上妥协。

  

更新:

您可以假设答案的第二个维度(列数)将是固定的,例如答案将始终是一些n乘m矩阵,而不是一些不同列大小的参差不齐的数组。

  

另一个例子:

在我的情况下,A和B分别是m乘3和m乘以2,答案应该是m乘1.对于这种情况的解决方案就足够了,但是对于大小为m的矩阵的一般解由n1,m乘以n2通过n3回答m将是非常有趣的。另一个例子是

A = [1,2,3,4,5;
     8,4,7,9,6]
B = [2,3;
     4,9]

答案是

C = [1,4,5;
     8,7,6]

0 个答案:

没有答案