根据两列中的元素从另一个数组中减去一个数组
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)
a
和b
会得到,我想得到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)
你的符号有点不一致,但看起来你想将 a
和 b
理解为两个数字元组的 set。没关系,就这么办吧。
在Python中,这会非常容易;我只是用 Python 来说明这个概念:
a = {(1,2), (1,3), (2,3)}
b = {(1,2), (2,3)}
c = a - b
在matlab中,要用到setdiff;基本上,您需要将 2 元组作为 a
和 b
的 行(因此 a
将是一个 3×2 矩阵)。
¹ 这并非 100% 正确。我还要在这里告诉您,如果您的代码依赖于 Matlab 执行大量设置操作,那么您将度过漫长而缓慢的令人讨厌的编码一天,而另一天又将是缓慢而令人讨厌的 matlab 运行。这真的不是 matlab 擅长的东西,无论是从开发的角度,还是从执行的角度。可能值得看看除 matlab 以外的其他工具!
我正在寻找一种有效的方法来做到这一点:
(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)
a
和b
会得到,我想得到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)
你的符号有点不一致,但看起来你想将 a
和 b
理解为两个数字元组的 set。没关系,就这么办吧。
在Python中,这会非常容易;我只是用 Python 来说明这个概念
a = {(1,2), (1,3), (2,3)}
b = {(1,2), (2,3)}
c = a - b
在matlab中,要用到setdiff;基本上,您需要将 2 元组作为 a
和 b
的 行(因此 a
将是一个 3×2 矩阵)。
¹ 这并非 100% 正确。我还要在这里告诉您,如果您的代码依赖于 Matlab 执行大量设置操作,那么您将度过漫长而缓慢的令人讨厌的编码一天,而另一天又将是缓慢而令人讨厌的 matlab 运行。这真的不是 matlab 擅长的东西,无论是从开发的角度,还是从执行的角度。可能值得看看除 matlab 以外的其他工具!