主要内容

setdiff.

设置两个数组的差值

描述

例子

C= setdiff(A、B返回数据一种那不是B.,没有重复。C是有序的。

  • 如果一种B.是表或时间表,然后setdiff.返回行的行一种那不是B..的航班时刻表,setdiff.考虑到行时间以确定平等,并对输出时间表进行排序C按行时间。

例子

C= setdiff(A、BsetOrder.回报C以特定的顺序。setOrder.“排序”'稳定的'

C= setdiff(A、B___,'行')C= setdiff(A、B,'行',___处理每一行一种和每一行B.作为单个实体并返回行一种那不是B.,没有重复。您必须指定一种B.并且可以选择指定setOrder.

'行'选项不支持单元格阵列,除非其中一金宝app个输入是分类数组或DATETIME数组。

例子

[CIA.] = setdiff(___还返回索引矢量IA.使用任何前面的语法。

  • 一般来说,c = a(ia)

  • 如果是'行'选择选项,然后: C = (ia)

  • 如果一种B.是表或时间表,然后: C = (ia)

例子

[CIA.] = setdiff(A、B“遗产”)[CIA.] = setdiff(A、B,'行','遗留')保留行为setdiff.来自R2012B和先前版本的功能。

“遗产”选项不支持分类数组,日期时间阵列金宝app,持续时间数组,表或时间表。

例子

全部收缩

定义两个具有共同值的向量。

a = [3 6 2 1 5 1];B = [2 4 6];

找到值一种那不是B.

C = setdiff (A, B)
C =1×31 3 5

定义具有共同行的两个表。

一个=表([1:5],[“一个”;“B”;“C”;' D ';“E”),逻辑([0,1,0,1,0]))
A =5×3表Var1 Var2 Var3 ____ ____ _____ 1 A false 2 B true 3 C false 4 D true 5 E false
B =表([1:2:10],[“一个”;“C”;“E”;'G';'一世'],逻辑(零(5,1)))
B =5×3表Var1 Var2 Var3 ____ ____ _____ 1 A假3 C假5 E假7 G假9 I假

找到一种那不是B.

C = setdiff (A, B)
C =2×3表Var1 Var2 Var3 ____ ____ _____ 2 B true 4 D true

定义两个具有共同值的向量。

a = [3 6 2 1 5 1];B = [2 4 6];

找到值一种那不是B.以及索引向量IA.,这样c = a(ia)

[c,ia] = setdiff(a,b)
C =1×31 3 5
IA =3×14 1 5.

定义表,一种,性别,年龄和5人的身高。

a =表(['M';'M';'F';'M';'F']、[27;52;31;46;35],[74;68;64;61;64),...“VariableNames”,{“性别”“年龄”'高度'},...“RowNames”,{“泰德”“弗雷德”“贝蒂”'鲍勃''朱迪'})
A =5×3表性别年龄高度______ ___ ______泰德M 27 74 FRED M 52 68贝蒂F 31 64鲍勃46 61朱迪F 35 64

定义表,B.,具有相同的变量一种

([B =表'F';'M';'F';'F'],[64; 68; 62; 58],[31, 47岁,35岁,23],...“VariableNames”,{“性别”'高度'“年龄”},...“RowNames”,{梅格的'乔'“贝丝”“艾米”})
B =4×3表性别高度______ ______ ___ ___ meg f 64 31 joe m 68 47 beth f 62 35 amy f 58 23

找到一种那不是B.以及索引矢量IA.,这样: C = (ia)

[c,ia] = setdiff(a,b)
C =4×3表性别年龄高度_________ _________朱迪F 35 64 TED M 27 74 BOB M 46 61 FRED M 52 68
IA =4×15 1 4 2

的行C是先排序的吗性别下一个年龄

定义两个行相同的矩阵。

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

一种那不是B.以及索引向量IA.,这样: C = (ia)

[c,ia] = setdiff(a,b,'行'
C =2×31 4 5 7 9 7
IA =2×15 1

使用setOrder.参数指定值的排序C

指定'稳定的'“排序”当值的顺序C是很重要的。

a = [3 6 2 1 5 1];B = [2 4 6];[c,ia] = setdiff(a,b,'稳定的'
C =1×33 1 5.
IA =3×11 4 5.

或者,您可以指定“排序”秩序。

[c,ia] = setdiff(a,b,“排序”
C =1×31 3 5
IA =3×14 1 5.

定义两个含有的向量

a = [5南南];B = [5南];

找到设定的差异一种B.

C = setdiff (A, B)
C =1×2南纳

setdiff.对待价值观是截然不同的。

创建一个字符向量的单元格数组,一种

a = {'狗'“猫”“鱼”'马'};

创建一个字符向量的单元格数组,B.,其中一些矢量有尾随空格。

b = {“狗”“猫”'鱼 ''马'};

找到字符向量一种那不是B.

[c,ia] = setdiff(a,b)
C =1x2细胞{'狗'} {'鱼'}
IA =2×11 3.

setdiff.将字符向量单元格数组的尾随空格视为不同的字符。

创建一个字符向量,一种

a = [“猫”;'狗';'狐狸';'猪'];类(一)
ans = '字符'

创建一个字符向量的单元格数组,B.

b = {'狗'“猫”“鱼”'马'};类(B)
ans =“细胞”

找到字符向量一种那不是B.

C = setdiff (A, B)
C =2 x1细胞{'fox'} {'pig'}

结果,C,是字符向量的单元格数组。

班级(c)
ans =“细胞”

使用“遗产”旗帜保持行为setdiff.来自R2012B和代码中的先前版本。

找到差异一种B.随着当前的行为。

a = [3 6 2 1 5 1];B = [2 4 6];[C1,IA1] = SetDiff(A,B)
C1 =1×31 3 5
ia1 =3×14 1 5.

找到差异一种B.,并保留遗留行为。

[C2,IA2] = SetDiff(A,B,“遗产”
C2 =1×31 3 5
ia2 =1×37 1 5.

输入参数

全部收缩

输入数组,指定为数字数组、逻辑数组、字符数组、字符串数组、类别数组、日期时间数组、持续时间数组、字符向量单元格数组、表或时间表。如果指定'行'选项,一种B.必须具有相同数量的列。

一种B.必须属于具有以下例外的同一类:

  • 逻辑char,所有数字类都可以与之结合双倍的数组。

  • 字符向量的单元格阵列可以与字符阵列或串阵列组合。

  • 分类阵列可以与字符数组,字符向量的单元格阵列或字符串数​​组组合。

  • DateTime阵列可以与日期字符向量或单日日期矢量的单元格阵列组合。

还有额外的要求一种B.根据数据类型:

  • 如果一种B.是序列分类阵列,它们必须具有相同的类别,包括其订单。如果既不是一种也不B.是序数,他们不需要具有相同的类别集,并且使用类别名称执行比较。在这种情况下,类别的类别C是类别的分类联盟一种B.

  • 如果一种B.是表或时间表,它们必须具有相同的变量名称(订单除外)。对于表,忽略行名称,因此具有相同的两行具有相同值但不同的名称。对于时间表,考虑行时间,因此两行具有相同值但不同的时间,不被视为相等。

  • 如果一种B.是DateTime阵列,它们必须在彼此中一致,无论是指定时区。

一种B.也可以是具有以下类方法的对象:

  • 排序(要么排队为了'行'选项)

  • eq.

对象类方法必须彼此一致。这些对象包括来自相同根类的异构阵列。例如,一种B.可以是图形对象的句柄数组。

订单标志,指定为“排序”'稳定的',表示值(或行)的顺序C

旗帜 描述
“排序”

中的值(或行)C按返回的排序顺序返回排序

例子

c = setdiff([4 1 3 2 5],[2 1],“排序”
C = 3 4 5

'稳定的'

中的值(或行)C以与相同的顺序返回一种

例子

c = setdiff([4 1 3 2 5],[2 1],'稳定的'
C = 4 3 5

数据类型:char|字符串

输出参数

全部收缩

差异一种B.,作为向量,矩阵,表格或时间表返回。如果输入一种B.是表还是时间表,那么变量的顺序在哪里C和变量的顺序一样吗一种

下面描述的形状C当输入是向量或矩阵时以及何时“遗产”未指定Flag:

  • 如果是'行'未指定标志一种是一排矢量,然后C是一排矢量。

  • 如果是'行'未指定标志一种不是行向量吗C是一个列向量。

  • 如果是'行'则指定FlagC一个矩阵包含行吗一种那不是B.

  • 如果所有的值(或行)一种也在B., 然后C是一个空矩阵。

的类C是同一班的吗一种, 除非:

  • 一种是一个字符阵列和B.是一个字符向量的单元格阵列,在这种情况下C是字符向量的单元格数组。

  • 一种是一个字符矢量,字符矢量或字符串的特征阵列,以及B.是分类数组,在什么情况下C是一个分类数组。

  • 一种单元格数组是字符向量还是单个字符向量和B.是DateTime数组,在这种情况下C是一个日期时间数组。

  • 一种是字符向量还是字符向量和的单元格数组B.是一个字符串数组,在这种情况下C是一个字符串数组。

索引一种,返回列向量时“遗产”未指定Flag。IA.中的值(或行)一种那不是B..如果有一个专门出现的重复值(或行)一种, 然后IA.包含值(或行)第一次出现的索引。

提示

  • 要找到与表或时间表的变量子集的集合差异,可以使用列订户。例如,您可以使用setdiff(a(:,var), B (:,var))), 在哪里var是正整数、正整数向量、变量名、变量名单元格数组或逻辑向量。或者,您可以使用vartype.创建选择指定类型的变量的下标。

扩展功能

之前介绍过的R2006a