Matlab学习笔记7——unique

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • unique
  • 一、语法
  • 二、使用说明
    • C = unique(A)
          • 说明
          • 示例
    • C = unique(A,setOrder)
          • 说明
          • 示例
    • C = unique(A,occurrence)
          • 说明
    • C = unique(A,___,'rows')
          • 说明
          • 示例
    • [C,ia,ic] = unique(___)
          • 说明


unique

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)

说明

C = unique(A) 返回与 A 中相同的数据,但是不包含重复项。C 已排序。
如果 A 是表或时间表,则 unique 按排序顺序返回 A 中的唯一行。对于时间表,当确定行是否唯一时,unique 会考虑行时间和行值,并按行时间对输出时间表 C 排序。
如果 A 是分类数组,则排序顺序由类别的顺序确定。

示例

向量中的唯一值
定义包含一个重复值的向量。

List_Label = unique(Ori_train_data.Label);

Matlab学习笔记7——unique_第1张图片
Matlab学习笔记7——unique_第2张图片

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)

说明

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)

说明

C = unique(A,occurrence) 指定遇到重复值时应返回哪个索引。occurrence 可以是 ‘first’(默认值)或 ‘last’。

C = unique(A,___,‘rows’)

说明

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(___)

说明

[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,:)。

你可能感兴趣的:(Matlab学习,matlab,学习,开发语言)