根据两列中的元素从另一个数组中减去一个数组

Subtract an array from another array based on elements in both columns

我正在寻找一种有效的方法来做到这一点:

(a=1 2; 1 3; 2 3)  - b=(1 2; 2 3) = (c=1 3)

或:

a=nchoosek([1 2 3 4 5 6],2) - b=(1 2; 1 3; 2 4;3 5;3 6) = (c=1 4;1 5;1 6;2 3;2 5;2 6;3 4;4 5;4 6; 5 6)

ab会得到,我想得到c;所有数据都是双倍的。总会有两列。

I am looking for an efficient way to do this:

(a=1 2; 1 3; 2 3)  - b=(1 2; 2 3) = (c=1 3)

你的符号有点不一致,但看起来你想将 ab 理解为两个数字元组的 set。没关系,就这么办吧。

在Python中,这会非常容易;我只是用 Python 来说明这个概念:

a = {(1,2), (1,3), (2,3)}
b = {(1,2), (2,3)}
c = a - b

在matlab中,要用到setdiff;基本上,您需要将 2 元组作为 ab(因此 a 将是一个 3×2 矩阵)。


¹ 这并非 100% 正确。我还要在这里告诉您,如果您的代码依赖于 Matlab 执行大量设置操作,那么您将度过漫长而缓慢的令人讨厌的编码一天,而另一天又将是缓慢而令人讨厌的 matlab 运行。这真的不是 matlab 擅长的东西,无论是从开发的角度,还是从执行的角度。可能值得看看除 matlab 以外的其他工具!