当前位置: 首页 > news >正文

MATLAB中intersect函数用法

目录

语法

说明

示例

两个向量的交集

两个表的交集

两个向量及其索引的交集

两个表及其索引的交集

两个矩阵中的行的交集

具有指定输出顺序的交集

包含 NaN 的向量的交集

带有尾随空白的字符向量元胞数组

具有不同类和形状的数组的交集

字符和字符向量元胞数组的交集

保留 intersect 的旧版行为


        intersect函数的功能是设置两个数组的交集。

语法

C = intersect(A,B)
C = intersect(A,B,setOrder)
C = intersect(A,B,___,'rows')
C = intersect(A,B,'rows',___)
[C,ia,ib] = intersect(___)
[C,ia,ib] = intersect(A,B,'legacy')
[C,ia,ib] = intersect(A,B,'rows','legacy')

说明

C = intersect(A,B) 返回 A 和 B 的共有数据,但是不包含重复项。C 已排序。

        如果 A 和 B 是表或时间表,intersect 将返回这两个表的共有行集。对于时间表,intersect 在确定相等性时会考虑行时间,并且会按行时间对输出时间表 C 进行排序。

C = intersect(A,B,setOrder) 以特定顺序返回 C。setOrder 可以是 'sorted' 或 'stable'。

C = intersect(A,B,___,'rows') 和 C = intersect(A,B,'rows',___) 将 A 和 B 的每一行都视为单个实体,并返回 A 和 B 的共有行,但是不包含重复项。必须指定 A 和 B,setOrder 是可选的。

        'rows' 选项不支持元胞数组,除非其中一个输入项为分类数组或日期时间数组。

[C,ia,ib] = intersect(___) 还使用上述任何语法返回索引向量 ia 和 ib。

        一般情况下,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' 选项不支持分类数组、日期时间数组、持续时间数组、表或时间表。

示例

两个向量的交集

        创建两个具有某些相同值的向量。

A = [7 1 7 7 4]; 
B = [7 0 4 4 0];

        查找 A 和 B 的共有值。

C = intersect(A,B)
C = 1×24     7

两个表的交集

        创建都包含某些行的两个表。

A = table([1:5]',categorical({'A';'B';'C';'D';'E'}),logical([0;1;0;1;0]))
A=5×3 tableVar1    Var2    Var3 ____    ____    _____1       A      false2       B      true 3       C      false4       D      true 5       E      falseB = table([1:2:10]',categorical({'A';'C';'E';'G';'I'}),logical(zeros(5,1)))
B=5×3 tableVar1    Var2    Var3 ____    ____    _____1       A      false3       C      false5       E      false7       G      false9       I      false

        查找 A 和 B 的共有行。

C = intersect(A,B)
C=3×3 tableVar1    Var2    Var3 ____    ____    _____1       A      false3       C      false5       E      false

两个向量及其索引的交集

        创建都包含某些值的两个向量。

A = [7 1 7 7 4]; 
B = [7 0 4 4 0];

        查找 A 与 B 以及索引向量 ia 与 ib 的共有值,使得 C = A(ia) 并且 C = B(ib)。

[C,ia,ib] = intersect(A,B)
C = 1×24     7ia = 2×151ib = 2×131

两个表及其索引的交集

        创建表 A,其中包含五个人的性别、年龄和身高。

A = table(categorical({'M';'M';'F';'M';'F'}),...
[27;52;31;46;35],[74;68;64;61;64],...
'VariableNames',{'Gender' 'Age' 'Height'},...
'RowNames',{'Ted' 'Fred' 'Betty' 'Bob' 'Judy'})
A=5×3 tableGender    Age    Height______    ___    ______Ted        M       27       74  Fred       M       52       68  Betty      F       31       64  Bob        M       46       61  Judy       F       35       64  

        创建一个与 A 具有共有行的表 B。

B = table(categorical({'F';'M';'F';'F'}),...
[31;47;35;23],[64;68;62;58],...
'VariableNames',{'Gender' 'Age' 'Height'},...
'RowNames',{'Meg' 'Joe' 'Beth' 'Amy'})
B=4×3 tableGender    Age    Height______    ___    ______Meg       F       31       64  Joe       M       47       68  Beth      F       35       62  Amy       F       23       58  

        查找 A 与 B 以及索引向量 ia 和 ib 的共有行,使得 C = A(ia,:) 并且 C = B(ib,:)。

[C,ia,ib] = intersect(A,B)
C=1×3 tableGender    Age    Height______    ___    ______Betty      F       31       64  ia = 3
ib = 1

        值相同而名称不同的两行将被视为相等。因此,我们发现 Betty A(3,:) 和 Meg, B(1,:) 的性别、年龄及身高都相同。

两个矩阵中的行的交集

        创建两个包含共有行的矩阵。

A = [2 2 2; 0 0 1; 1 2 3; 1 1 1];
B = [1 2 3; 2 2 2; 2 2 0];

        查找 A 与 B 以及索引向量 ia 和 ib 的共有行,使得 C = A(ia,:) 并且 C = B(ib,:)。

[C,ia,ib] = intersect(A,B,'rows')
C = 2×31     2     32     2     2ia = 2×131ib = 2×112

        A 和 B 的行数无需相同,但列数必须相同。

具有指定输出顺序的交集

        使用 setOrder 参数指定 C 中值的排序方式。如果想要 C 中的值与 A 中的值顺序相同,请指定 'stable'。

A = [7 1 7 7 4]; B = [7 0 4 4 0];
[C,ia,ib] = intersect(A,B,'stable')
C = 1×27     4ia = 2×115ib = 2×113

        此外,还可以指定 'sorted' 顺序。

[C,ia,ib] = intersect(A,B,'sorted')
C = 1×24     7ia = 2×151ib = 2×131

包含 NaN 的向量的交集

        创建两个包含 NaN 的向量。

A = [5 NaN NaN]; 
B = [5 NaN NaN];

        查找 A 和 B 的共有值。

C = intersect(A,B)
C = 5

        intersect 将 NaN 值视为不同的值。

带有尾随空白的字符向量元胞数组

        创建字符向量元胞数组A。

A = {'dog','cat','fish','horse'};

        创建字符向量元胞数组 B,其中某些向量带有尾随空白。

B = {'dog ','cat','fish ','horse'};

        找出 A 和 B 的共有字符向量。

[C,ia,ib] = intersect(A,B)
C = 1x2 cell{'cat'}    {'horse'}ia = 2×124ib = 2×124

        intersect 将字符向量元胞数组中的尾随空白视为不同的字符。

具有不同类和形状的数组的交集

        创建一个列向量字符数组。

A = ['A';'B';'C'], class(A)
A = 3x1 char array'A''B''C'ans = 
'char'

        创建一个包含数值类型 double 的元素的 2×3 矩阵。

B = [65 66 67;68 69 70], class(B)
B = 2×365    66    6768    69    70ans = 
'double'

        查找 A 和 B 的共有值。

[C,ia,ib] = intersect(A,B)
C = 3x1 char array'A''B''C'ia = 3×1123ib = 3×1135

        intersect 将 B 解释为字符数组并返回字符数组 C。

class(C)
ans = 
'char'

字符和字符向量元胞数组的交集

        创建包含三个字母的动物名称的字符向量。

A = ['dog';'cat';'fox';'pig'];
class(A)
ans = 
'char'

        创建包含不同长度的动物名称的字符向量元胞数组。

B = {'cat','dog','fish','horse'};
class(B)
ans = 
'cell'

        找出 A 和 B 的共有字符向量。

C = intersect(A,B)
C = 2x1 cell{'cat'}{'dog'}

        结果 C 是字符向量元胞数组。

class(C)
ans = 
'cell'

保留 intersect 的旧版行为

        在代码中使用 'legacy' 标志以保留 R2012b 和早期版本中 intersect 的行为。

        使用当前行为查找 A 和 B 的交集。

A = [7 1 7 7 4]; 
B = [7 0 4 4 0];
[C1,ia1,ib1] = intersect(A,B)
C1 = 1×24     7ia1 = 2×151ib1 = 2×131

        查找 A 的唯一元素并保留旧版行为。

[C2,ia2,ib2] = intersect(A,B,'legacy')
C2 = 1×24     7ia2 = 1×25     4ib2 = 1×24     1

提示

  • ​要查找表或时间表中变量子集的交集,可以使用列下标。例如,可以使用 intersect(A(:,vars),B(:,vars)),其中 vars 为正整数、正整数向量、变量名称、变量名称元胞数组或逻辑向量。也可以使用 vartype 创建一个下标,以选择指定类型的变量。


http://www.mrgr.cn/news/51946.html

相关文章:

  • Js 更加优雅地实现Form表单重置
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析四
  • 书籍推荐:《从零构建大型语言模型》附免费PDF下载
  • 【2023医学图像分割文献】UniverSeg: 通用医学图像分割方法
  • MongoDB 8.0已全面可用
  • 制冷压缩机液击介绍
  • 轻松学Python|数据类型:数字类型、空类型、布尔类型
  • 使用Python解决化学问题的实用指南
  • 苹果开源Depth Pro:0.3秒实现从2D图像到3D深度图的革命性突破
  • 又一支付机构“经营异常”——易极付
  • 再加码中国市场!Credo有源电缆AEC如何助力数据中心发展?
  • MongoDB查询操作
  • 常见Elasticsearch 面试题答案详细解析(下)
  • 创建uniCloud新项目并且是新服务空间,运行会报Error: Invalid uni-id config file错误
  • 如何做好项目管理,实现高效协作?
  • Socket 网络编程与 C# 中的应用实例
  • 安装vue发生异常: idealTree:nodejs: sill idealTree buildDeps
  • FreeRTOS——中断管理
  • 15分钟学Go 第3天:编写第一个Go程序
  • 常见网络钓鱼类型