setdiff
设置两个数组的差值
语法
描述
例子
两个向量之差
两表之差
定义两个行相同的表。
A = table([1:5]',[“一个”;“B”;“C”;' D ';“E”),逻辑([0,1,0,1,0]))
一个=5×3表Var1 Var2 Var3 ____ ____ _____ 1 A假2 B真3 C假4 D真5 E假
B = table [1:2:10]',[“一个”;“C”;“E”;‘G’;“我”),逻辑(0(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 1];B = [2 4 6];
找出中的值一个
这些都不在B
还有索引向量ia
,这样C = A(ia)
。
[C, A] = setdiff(A,B)
C =1×31 3 5
ia =3×14 1 5
两个表的差异和不同行的索引
定义一个表,一个
五个人的性别、年龄和身高。
A = table(表)“米”;“米”;“F”;“米”;“F”]、[27;52;31;46;35],[74;68;64;61;64),…“VariableNames”,{“性别”“年龄”“高度”},…“RowNames”,{“泰德”“弗雷德”“贝蒂”“鲍勃”“朱迪”})
一个=5×3表性别年龄身高______ ___ ______泰德M 27 74弗雷德M 52 68贝蒂F 31 64鲍勃M 46 61朱迪F 35 64
定义一个表,B
,变量与一个
。
B = table[表]“F”;“米”;“F”;“F”],[64; 68; 62; 58],[31, 47岁,35岁,23],…“VariableNames”,{“性别”“高度”“年龄”},…“RowNames”,{梅格的“乔”“贝丝”“艾米”})
B =4×3表性别身高年龄______ ______ ___梅格F 64 31乔M 68 47贝丝F 62 35艾米F 58 23
找出行数一个
这些都不在B
,以及索引向量ia
,这样C = A(ia,:)
。
[C, A] = setdiff(A,B)
C =4×3表性别年龄身高______ ___ ______朱迪F 35 64特德M 27 74鲍勃M 46 61弗雷德M 52 68
ia =4×15 1 4 2
一排排的C
是按先后顺序排序的吗性别
接下来是年龄
。
两个矩阵的行差
定义两个行相同的矩阵。
A = [7 9 7];0 0 0;7 9 7;5 5 5;[4];B = [0 0 0];[5];
从一个
这些都不在B
还有索引向量ia
,这样C = A(ia,:)
。
[C, A] = A,B,“行”)
C =2×314、5、7、9、7
ia =2×15个1
给定输出阶数的两个向量之差
使用setOrder
中值的顺序C
。
指定“稳定”
或“排序”
当值的顺序C
是很重要的。
A = [3 6 2 1 5 1 1];B = [2 4 6];[C, A] = A,B,“稳定”)
C =1×33 1 5
ia =3×11 4 5
或者,您可以指定“排序”
秩序。
[C, A] = A,B,“排序”)
C =1×31 3 5
ia =3×14 1 5
包含NaNs的向量之差
带有尾随空格的字符向量单元数组
创建字符向量的单元数组,一个
。
A = {“狗”,“猫”,“鱼”,“马”};
创建字符向量的单元数组,B
,其中一些向量有尾随的空白。
B = {“狗”,“猫”,“鱼”,“马”};
找出中的字符向量一个
这些都不在B
。
[C, A] = setdiff(A,B)
C =1 x2单元格{‘狗’}{'鱼'}
ia =2×11 3
setdiff
将字符向量单元格数组中的尾随空格视为不同的字符。
字符向量的字符和单元数组的区别
创建一个字符向量,一个
。
A = [“猫”;“狗”;“狐狸”;“猪”];类(一)
Ans = 'char'
创建字符向量的单元数组,B
。
B = {“狗”,“猫”,“鱼”,“马”};类(B)
Ans = 'cell'
找出中的字符向量一个
这些都不在B
。
C = setdiff(A,B)
C =2 x1细胞{“福克斯”}{'猪'}
结果,C
,是字符向量的单元数组。
类(C)
Ans = 'cell'
保留setdiff的遗留行为
使用“遗产”
标记来保留的行为setdiff
从R2012b和之前的版本在您的代码。
找出的区别一个
和B
使用当前行为。
A = [3 6 2 1 5 1 1];B = [2 4 6];[C1,ia1] = setdiff(A,B)
C1 =1×31 3 5
ia1 =3×14 1 5
找出的区别一个
和B
,并保留遗留行为。
[c, c, c] = [c, c, c]“遗产”)
C2 =1×31 3 5
ia2 =1×37 1 5
输入参数
A、B
- - - - - -输入数组
数字数组|逻辑阵列|字符数组|字符串数组|分类数组|datetime数组|持续时间数组|字符向量的单元数组|表|时间表
输入数组,指定为数字数组、逻辑数组、字符数组、字符串数组、分类数组、日期时间数组、持续时间数组、字符向量、表或时间表的单元格数组。如果您指定“行”
选项,一个
和B
必须有相同数量的列。
一个
和B
必须属于同一个类,但有以下例外:
逻辑
,字符
,所有数值类都可以与双
数组。字符向量的单元格数组可以与字符数组或字符串数组组合。
分类数组可以与字符数组、字符向量的单元格数组或字符串数组组合使用。
日期时间数组可以与日期字符向量或单个日期字符向量的单元格数组组合。
有额外的要求一个
和B
根据数据类型:
如果
一个
和B
都是有序分类数组,它们必须具有相同的类别集,包括它们的顺序。如果既不一个
也不B
是有序的,它们不需要具有相同的类别集,并且使用类别名称执行比较。在本例中,的类别C
来自的类别的排序并集是吗一个
和B
。如果
一个
和B
如果是表或时间表,它们必须具有相同的变量名(顺序除外)。对于表,行名被忽略,因此具有相同值但名称不同的两行被认为是相等的。对于时间表,会考虑行时间,因此具有相同值但时间不同的两行不会被认为是相等的。如果
一个
和B
作为日期时间数组,它们在是否指定时区方面必须彼此一致。
一个
和B
也可以是具有以下类方法的对象:
排序
(或sortrows
为“行”
选项)情商
不
对象类的方法必须彼此一致。这些对象包括从同一根类派生的异构数组。例如,一个
和B
可以是图形对象的句柄数组。
setOrder
- - - - - -订单的旗帜
“排序”
(默认)|“稳定”
订单标志,指定为“排序”
或“稳定”
中值(或行)的顺序C
。
国旗 | 描述 |
---|---|
“排序” |
中的值(或行) 例子 C = setdiff([4 1 3 2 5],[21 1],“排序”)
C = 3 |
“稳定” |
中的值(或行) 例子 C = setdiff([4 1 3 2 5],[21 1],“稳定”)
5 .答案:C |
数据类型:字符
|字符串
输出参数
C
-差异一个
和B
向量|矩阵|表|时间表
的差异一个
和B
,以矢量、矩阵、表或时间表的形式返回。如果输入一个
和B
是表格还是时间表,然后是变量的顺序C
和变量的顺序一样吗一个
。
下面描述的形状C
当输入是向量或矩阵时“遗产”
未指定标志:
如果
“行”
标志未指定,且一个
是一个行向量C
是一个行向量。如果
“行”
标志未指定,且一个
它不是行向量吗C
是一个列向量。如果
“行”
则指定FlagC
矩阵是否包含行一个
这些都不在B
。的所有值(或行)
一个
也在B
,然后C
是一个空矩阵。
的类C
和的类相同吗一个
,除非:
一个
字符数组是和吗B
是字符向量的单元阵列,在哪种情况下C
是字符向量的单元数组。一个
是字符向量,字符向量的单元数组,还是字符串,和B
是一个分类数组,在哪种情况下C
是一个分类数组。一个
是字符向量或单个字符向量的细胞数组和B
是一个datetime数组,在哪种情况下C
是一个日期时间数组。一个
是字符向量或字符向量的细胞数组和B
是字符串数组,在哪种情况下C
是一个字符串数组。
ia
-索引一个
列向量
索引一个
时,作为列向量返回“遗产”
未指定标志。ia
中的值(或行)一个
这些都不在B
。中出现的重复值(或行)一个
,然后ia
包含值(或行)的第一个出现项的索引。
提示
若要查找表或时间表中变量子集的集差,可以使用列下标。例如,您可以使用
setdiff ((:,
,在那里var
), B (:,var
))var
是一个正整数、一个正整数的向量、一个变量名、一个变量名的单元格数组或一个逻辑向量。或者,您可以使用vartype
创建选择指定类型变量的下标。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
代码生成不支持第一个或第二个参数的单元格数组。金宝app
当您不指定时
“行”
选择:输入
一个
和B
一定是向量。如果您指定“遗产”
选项,然后输入一个
和B
一定是行向量。可变大小的行向量的第一个维度必须具有固定长度1。可变大小列向量的第二维必须具有固定长度1。
不要使用
[]
表示空集。例如,使用1 × 0或0 × 1输入,0 (1,0)
,表示空集。如果您指定
“遗产”
选项,则空输出是行向量,1 × 0。它们从来不是0 × 0的。
当您同时指定
“遗产”
和“行”
选项,输出ia
是一个列向量。如果ia
是空的,那么它就是0 × 1。它永远不会是0 × 0,即使输出C
0-by-0。当
setOrder
不是“稳定”
或者当你指定“遗产”
选项时,输入必须已经按升序排序。第一个输出,C
,按升序排序。复杂的输入必须是
单
或双
。当一个输入是复数而另一个输入是实数时,执行以下操作之一:
集
setOrder
来“稳定”
。将实际输入按复升序排序(按绝对值排序)。假设实际输入是
x
。使用排序(复杂的(x))
或sortrows(复杂的(x))
。
看到具有零值虚部的复杂数据的代码生成(MATLAB编码器)。
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
MATLAB命令
您点击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。