unique
数组中的唯一值。
格式
C = unique(A)
C = unique(A,setOrder)
C = unique(A,occurrence)
C = unique(A,___,'rows')
C = unique(A,'rows',___)
[C,ia,ic] = unique(___)
[C,ia,ic] = unique(A,'legacy')
[C,ia,ic] = unique(A,'rows','legacy')
[C,ia,ic] = unique(A,occurrence,'legacy')
[C,ia,ic] = unique(A,'rows',occurrence,'legacy')
用法
-
C = unique(A)
返回与A相同的数据,但没有重复。C是按顺序排列的。
如果A是表格或时间表,则UNIQUE将按排序顺序返回A中的唯一行。对于时间表,Unique在确定行是否唯一时会考虑行时间和行值,并按行时间对输出时间表C进行排序。
例子
A = [9 2 9 5];
C = unique(A)
C = 1×3
2 5 9
-
C = unique(A,setOrder)
按特定顺序返回A的唯一值。setOrder可以是'sorted'(默认)或'stable'。
A = [9 2 9 5];
[C, ia, ic] = unique(A,'stable') % 不排序,stable
C = 1×3
9 2 5
ia = 3×1
1
2
4
ic = 4×1
1
2
1
3
[C, ia, ic] = unique(A,'sorted') % 排序 sorted
C = 1×3
2 5 9
ia = 3×1
2
4
1
ic = 4×1
3
1
3
2
-
C = unique(A,occurrence)
指定在重复值的情况下返回哪些索引。匹配项可以是'first'(默认)或'last'。
A = [9 2 5 9];
[C,ia,ic] = unique(A,'first') % 取第一个重复值
C =
2 5 9
ia =
2
3
1
ic =
3
1
2
3
[C,ia,ic] = unique(A,'last') % 取最后一个重复值
C =
2 5 9
ia =
2
3
4
ic =
3
1
2
3
-
C = unique(A,___,'rows')
和C = unique(A,'rows',___)
将A的每一行视为单个实体,并按排序顺序返回A的唯一行。您必须指定A,也可以选择指定setOrder或occurrence。
'rows'选项不支持单元格阵列。
%% 例1
IDX = [
1,2,3;
2,3,4;
2,1,3;
1,1,1;
1,1,1;
];
classNo = unique(IDX,'rows');
classNo =
1 1 1
1 2 3
2 1 3
2 3 4
%% 例子2
A = randi(3,12,3)
A =
2 1 3
1 2 3
2 2 2
2 3 3
2 3 1
2 3 2
2 1 1
1 1 2
1 2 1
1 1 1
1 1 3
2 1 2
[C,ia,ic] = unique(A(:,1:2),'rows')
C =
1 1
1 2
2 1
2 2
2 3
ia =
8
2
1
3
4
ic =
3
2
4
5
5
5
3
1
2
1
1
3
-
C,ia,ic] = unique(___)
还使用前面的任何语法返回索引向量ia和ic。- 如果A是一个向量,则C=A(ia)和A=C(ic)。
如果A是矩阵或数组,则C=A(ia)且A(:)=C(ic)。
如果指定了‘row’选项,则C=A(ia,:)和A=C(ic,:)。
如果A是表格或时间表,则C=A(ia,:)且A=C(ic,:)。
- 如果A是一个向量,则C=A(ia)和A=C(ic)。
[C,ia,ic] = unique(A,'legacy')
,[C,ia,ic] = unique(A,'rows','legacy')
,[C,ia,ic] = unique(A,occurrence,'legacy')
,[C,ia,ic] = unique(A,'rows',occurrence,'legacy')
保留R2012b和之前版本的独特功能的行为。
'legacy'选项不支持类别数组、日期时间数组、持续时间数组、日历持续时间数组、表或时间表。