MATLAB setxor()函数的用法
在 MATLAB 中,setxor() 函数用于返回 A 和 B 中不相同的元素,求集合的异或值,即在并集但不在交集中的元素,如下图所示:

图 1 集合异或关系
setxor() 函数的调用格式及说明如下表所示。
【实例 1】求解向量的对称差集。
在 MATLAB 命令行窗口中输入如下命令:
【实例 2】求解两个矩阵中行的对称差集。
在 MATLAB 命令行窗口中输入如下命令:

图 1 集合异或关系
setxor() 函数的调用格式及说明如下表所示。
调用格式 | 说明 |
---|---|
C = setxor(A,B) | 返回不在 A 和 B 的交集中的元素(对称差集)组成的集合 C,不包括重复项。C 中的元素出现在 A 或 B 中,但不是同时出现在二者中。C 中的元素是有序的,一般为从小到大排列 |
C = setxor(A,B,setOrder) | 以特定顺序返回 C。setOrder 可以是 sorted(已排序)或 stable(不变化,按与 A 中相同的顺序返回 C 中的值) |
C = setxor(A,B,...,'rows') C = setxor(A,B,'rows',...) |
将 A 和 B 的每一行都视为单个实体,并返回在 A 和 B 中但不在二者交集中的行,不包括重复项。必须指定 A 和 B,setOrder 是可选的。rows 选项不支持元胞数组,除非其中一个输入项为分类数组或日期时间数组 |
[C,ia,ib] = setxor(...) | 返回索引向量 ia 和 ib |
[C,ia,ib] = setxor(A,B,'legacy') [C,ia,ib] =setxor(A,B,'rows','legacy') |
保留 R2012b 和早期版本中 setxor 函数的行为。legacy 选项不支持分类数组、日期时间数组、持续时间数组、表或时间表 |
该函数类似 [C,ia,ib]=intersect(A,B)。
【实例 1】求解向量的对称差集。
在 MATLAB 命令行窗口中输入如下命令:
>> clear % 清除工作区的变量 >> A = [1 2 3 4 5]; % 创建两个向量A和B >> B = [1 2 3 2 1]; >> C= setxor(A,B) % 返回不在 A 和 B 的交集中的值 C = 4 5
【实例 2】求解两个矩阵中行的对称差集。
在 MATLAB 命令行窗口中输入如下命令:
>> clear % 清除工作区的变量 >> A = [1 2 3;4 5 6;7 8 9]; % 创建两个矩阵A和B >> B = [4 5 6;3 2 1]; >> [C,ia,ib] = setxor(A,B,'rows') % 返回在A和B中但不在二者交集中的行以及对应的索引向量ia和ib C = 1 2 3 3 2 1 7 8 9 ia = 1 3 ib = 2