MATLAB intersect()函数的用法
在 MATLAB 中,intersect() 函数用于求解集合交集,该命令的调用格式及说明如下表所示。
【实例 1】求解向量的交集。
在 MATLAB 命令行窗口中输入如下命令:
【实例 2】求解向量交集的索引。
在 MATLAB 命令行窗口中输入如下命令:
【实例 3】求解两个矩阵中行的交集。
在 MATLAB 命令行窗口中输入如下命令:
调用格式 | 说 明 |
---|---|
C = intersect(A,B) | 设置两个集合的交集,也就是返回 A 和 B 的相同元素。返回的集合 C 中的值将会从小到大排序 |
C = intersect(A,B, setOrder) | 以特定顺序返回交集C。setOrder 可以是 sorted (已排序)或 stable(不变化,按与 A 中相同的顺序返回 C 中的值) |
C = intersect(A,B,…,'rows') C = intersect(A,B,'rows', ...) |
将 A 和 B 的每一行都视为单个实体,并返回 A 和 B 的共有行,但不包含重复项,必须指定 A 和 B。rows 选项不支持元胞数组,除非其中一个 输入项为分类数组或日期时间数组 |
[C,ia,ib] = intersec(...) | 返回索引向量 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] = intersect(A,B,'legacy') [C,ia,ib] = intersect(A,B,'rows','legacy') |
保留 R2012b 和早期版本中 intersect 函数的行为。legacy 选项不支持分类数组、日期时间数组、持续时间数组、表或时间表 |
【实例 1】求解向量的交集。
在 MATLAB 命令行窗口中输入如下命令:
>> clear % 清除工作区的变量 >> A = [1 2 3 4 5]; % 创建两个具有某些相同值的向量A和B >> B = [5 9 8 4 6]; >> C = intersect(A,B) % 查找A和B的共有值 C = 4 5
【实例 2】求解向量交集的索引。
在 MATLAB 命令行窗口中输入如下命令:
>> clear % 清除工作区的变量 >> A = [1 2 3 4 5]; % 创建两个具有某些相同值的向量A和B >> B = [5 9 8 4 6]; % 返回A和B的共有值以及索引向量 ia 与 ib ,使得 C = A(ia) 并且 C = B(ib) >> [C,ia,ib] = intersect(A,B) C = 4 5 ia = 4 5 ib = 4 1
【实例 3】求解两个矩阵中行的交集。
在 MATLAB 命令行窗口中输入如下命令:
>> clear % 清除工作区的变量 >> A = [1 2 3;4 5 6;7 8 9]; % 创建两个包含共有行的矩阵A和B >> B = [9 8 7;4 5 6;3 2 1]; >> C = intersect(A,B,'rows') % 查找A与B中行的交集 C = 4 5 6