首页 > 编程笔记 > MATLAB笔记 阅读:4

MATLAB setxor()函数的用法

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


图 1 集合异或关系

setxor() 函数的调用格式及说明如下表所示。

表: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

相关文章