MATLAB setdiff()函数的用法
在 MATLAB 中,setdiff() 函数用于求解集合的差集。
setdiff() 函数的调用格式及说明如下表所示。
【实例 1】求解向量的差集。
在 MATLAB 命令行窗口中输入如下命令:
【实例 2】求解两个矩阵中行的差集。
在 MATLAB 命令行窗口中输入如下命令:
setdiff() 函数的调用格式及说明如下表所示。
调用格式 | 说明 |
---|---|
C = setdiff(A,B) | 设置两个集合的差集,返回 A 中存在但 B 中不存在的元素组成的集合,返回集合 C 中的值将会从小到大排序。如果 A 和 B 是表或时间表,将返回这两个表的行的并集。对于时间表,在确定相等性时会考虑行时间,并按行时间对输出时间表 C 进行排序 |
C = setdiff(A,B,setOrder) | 以特定顺序返回 C。setOrder 可以是 sorted(已排序)或 stable(不变化,按与 A 中相同的顺序返回 C 中的值) |
C = setdiff(A,B,...,'rows') C = setdiff(A,B,'rows',...) |
将 A 和 B 的每一行都视为单个实体,并返回 A 中存在但 B 中不存在的行,不包含重复项,必须指定 A 和 B,可选择 setOrder 样式。rows 选项不支持元胞数组,除非其中一个输入项为分类数组或日期时间数组 |
[C,ia] = setdiff(...) | 返回索引向量 ia,即元素在 A 和 B 中的位置(Index)。一般情况下,C=A(ia)。如果指定了 rows 选项,则 C= A(ia,:)。如果 A 和 B 是表或时间表,则 C= A(ia,:) |
[C,ia] = setdiff(A,B,legacy') [C,ia] =setdiff(A,B,'rows','legacy') |
保留 R2012b 和早期版本中 setdiff 函数的行为。legacy 选项不支持分类数组、日期时间数组、持续时间数组、表或时间表 |
【实例 1】求解向量的差集。
在 MATLAB 命令行窗口中输入如下命令:
>> clear % 清除工作区的变量 >> A = [1 2 3 4 5]; % 创建两个向量A和B >> B = [1 2 3]; >> C = setdiff(A,B) % 计算向量 A 和 B 的差集 C = 4 5
【实例 2】求解两个矩阵中行的差集。
在 MATLAB 命令行窗口中输入如下命令:
>> clear % 清除工作区的变量 >> A = [1 2 3;4 5 6;7 8 9]; % 创建两个矩阵A和B >> B = [4 5 6;3 2 1]; >> [C,ia] = setdiff(A,B,'rows') % 查找A中存在,但B中不存在的行,以及对应的索引向量ia C = 1 2 3 7 8 9 ia = 1 3