提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
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 是分类数组,则排序顺序由类别的顺序确定。
向量中的唯一值
定义包含一个重复值的向量。
List_Label = unique(Ori_train_data.Label);
A = [9 2 9 5];
计算 A 的唯一值
C = unique(A)
C = 1×3
2 5 9
表中的唯一行
创建一个包含某些重复数据的表。
Name = {'Fred';'Betty';'Bob';'George';'Jane'};
Age = [38;43;38;40;38];
Height = [71;69;64;67;64];
Weight = [176;163;131;185;131];
A = table(Age,Height,Weight,'RowNames',Name)
A=5×3 table
Age Height Weight
___ ______ ______
Fred 38 71 176
Betty 43 69 163
Bob 38 64 131
George 40 67 185
Jane 38 64 131
查找 A 的唯一行,unique 按排序顺序(依次按第一个变量 Age 和第二个变量 Height 排序)返回 A 的行。
C = unique(A)
C=4×3 table
Age Height Weight
___ ______ ______
Bob 38 64 131
Fred 38 71 176
George 40 67 185
Betty 43 69 163
在第一个变量 Age 中查找具有唯一值的表行。如果只希望一个表变量包含唯一值,可以使用 unique 返回的索引从表中提取这些行。
[C,ia] = unique(A.Age);
B = A(ia,:)
B=3×3 table
Age Height Weight
___ ______ ______
Fred 38 71 176
George 40 67 185
Betty 43 69 163
唯一值及其索引
定义包含一个重复值的向量。
A = [9 2 9 5];
计算 A 的唯一值以及索引向量 ia 和 ic,这样 C = A(ia) 和 A = C(ic)。
[C, ia, ic] = unique(A)
C = 1×3
2 5 9
ia = 3×1
2
4
1
ic = 4×1
3
1
3
2
矩阵中的唯一行
创建一个包含某些重复行的 10×3 矩阵。
A = randi(3,10,3)
A = 10×3
3 1 2
3 3 1
1 3 3
3 2 3
2 3 3
1 1 3
1 2 3
2 3 2
3 3 2
3 3 1
基于前两列的数据查找 A 中的唯一行。指定三个输出以返回索引向量 ia 和 ic。
[C,ia,ic] = unique(A(:,1:2),'rows')
C = 7×2
1 1
1 2
1 3
2 3
3 1
3 2
3 3
ia = 7×1
6
7
3
5
1
4
2
ic = 10×1
5
7
3
6
4
1
2
4
7
7
使用 ia 对 A 进行索引并检索包含前两列中元素的唯一组合的行。
uA = A(ia,:)
uA = 7×3
1 1 3
1 2 3
1 3 3
2 3 3
3 1 2
3 2 3
3 3 1
唯一元素的计数
查找向量中的唯一元素,然后使用 accumarray 计算每个唯一元素出现的次数。
创建一个由 1 到 5 的随机整数组成的向量。
a = randi([1 5],200,1);
查找向量中的唯一元素。返回索引向量 ia 和 ic。
[C,ia,ic] = unique(a);
计算 C 中的每个元素在 a 中出现的次数。将 ic 指定为 accumarray 的第一个输入,将 1 指定为第二个输入,以便函数计算 ic 中的重复下标。汇总结果。
a_counts = accumarray(ic,1);
value_counts = [C, a_counts]
value_counts = 5×2
1 46
2 36
3 38
4 39
5 41
C = unique(A,setOrder)以特定顺序返回 A 的唯一值。setOrder 可以是 ‘sorted’(默认值)或 ‘stable’。
向量中按指定顺序排序的唯一值
使用 setOrder 参数指定 C 中值的排序方式。
如果您想要 C 中的值与 A 中的值顺序相同,请指定 ‘stable’。
A = [9 2 9 5];
[C, ia, ic] = unique(A,'stable')
C = 1×3
9 2 5
ia = 3×1
1
2
4
ic = 4×1
1
2
1
3
此外,还可以指定 ‘sorted’ 顺序。
[C, ia, ic] = unique(A,'sorted')
C = 1×3
2 5 9
ia = 3×1
2
4
1
ic = 4×1
3
1
3
2
含有 NaN 的数组中的唯一值
定义一个包含 NaN 的向量。
A = [5 5 NaN NaN];
计算 A 的唯一值。
C = unique(A)
C = 1×3
5 NaN NaN
unique 将 NaN 值视为不同的值。
C = unique(A,occurrence) 指定遇到重复值时应返回哪个索引。occurrence 可以是 ‘first’(默认值)或 ‘last’。
C = unique(A,,‘rows’) 和 C = unique(A,‘rows’,) 将 A 中的每一行视为单个实体,并按排序顺序返回 A 中的唯一行。必须指定 A,而 setOrder 和 occurrence 是可选的。
‘rows’ 选项不支持元胞数组。
矩阵中的唯一行
创建一个包含某些重复行的 10×3 矩阵。
A = randi(3,10,3)
A = 10×3
3 1 2
3 3 1
1 3 3
3 2 3
2 3 3
1 1 3
1 2 3
2 3 2
3 3 2
3 3 1
基于前两列的数据查找 A 中的唯一行。指定三个输出以返回索引向量 ia 和 ic。
[C,ia,ic] = unique(A(:,1:2),'rows')
C = 7×2
1 1
1 2
1 3
2 3
3 1
3 2
3 3
ia = 7×1
6
7
3
5
1
4
2
ic = 10×1
5
7
3
6
4
1
2
4
7
7
使用 ia 对 A 进行索引并检索包含前两列中元素的唯一组合的行。
uA = A(ia,:)
uA = 7×3
1 1 3
1 2 3
1 3 3
2 3 3
3 1 2
3 2 3
3 3 1
[C,ia,ic] = unique(___) 还可使用上述任何语法返回索引向量 ia 和 ic。
如果 A 是向量,则 C = A(ia) 且 A = C(ic)。
如果 A 是矩阵或数组,则 C = A(ia) 且 A(:) = C(ic)。
如果指定了 ‘rows’ 选项,则 C = A(ia,:) 且 A = C(ic,:)。
如果 A 是表或时间表,则 C = A(ia,:) 且 A = C(ic,:)。