首页 > 编程笔记 > MATLAB笔记

MATLAB union()函数的用法

在 MATLAB 中,union() 函数用于求解集合的并集。

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

表 1 union函数调用格式及说明
调用格式 说 明
C = union(A,B) 设置两个集合的并集,返回的集合 C 中的值将会从小到大排序。如果 A 和 B 是表或时间表,union() 函数将返回这两个表的行的并集。对于时间表,union() 函数在确定相等性时会考虑行时间,并按行时间对输出时间表 C 进行排序
C = union(A,B,setOrder) 以特定顺序返回 C。setOrder 可以是 sorted(已排序)或 stable(不变化,按与 A 中相同的顺序返回 C 中的值)
C = union(A,B, ...,'rows')
C = union(A,B,'rows',...)
将 A 和 B 的每一行都视为单个实体,并返回 A 和 B 的共有行,不包含重复项, 必须指定 A 和 B,可选择 setOrder 样式。rows 选项不支持元胞数组,除非其中 一个输入项为分类数组或日期时间数组
[C,ia,ib] = union(…) 返回索引向量 ia 和 ib,即元素在 A 和 B 中的位置(Index)。一般情况下, C = A(ia) 且 C = B(ib)如果指定了 rows 选项,则 C = A(ia,:)且 C = B(ib,:)。如果 A 和 B 是表或时间表,则 C = A(ia,:) 且 C = B(ib,:)
[C,ia,ib] = union(A,B,'legacy')
[C,ia,ib] = union(A,B,'rows','legacy')
保留 R2012b 和早期版本中 union 函数的行为。legacy 选项不支持分类数组、日期时间数组、持续时间数组、表或时间表

【实例 1】求解向量的并集。
在 MATLAB 命令行窗口中输入如下函数:
>> clear             % 清除工作区的变量
>> A = [1 2 3 4 5];  % 创建两个向量A和B
>> B = [5 9 8 4 6];
>> C = union(A,B)    % 计算向量 A 和 B 的并集,从小到大排序
C =
     1     2     3   4     5     6     8     9

【实例 2】求解两个矩阵中行的并集。
在 MATLAB 命令行窗口中输入如下命令:
>> clear                      % 清除工作区的变量
>> A = [1 2 3;4 5 6;7 8 9];   % 创建两个矩阵A和B
>> B = [9 8 7;4 5 6;3 2 1];
% 计算没有重复项的 A 和 B 共有行以及索引向量 ia 和 ib 的合并行
>> [C,ia,ib] = union(A,B,'rows')
C =
     1     2     3
     3     2     1
     4     5     6
     7     8     9
     9     8     7
ia =
     1
     2
     3
ib =
     3
     1

相关文章