Matlab学习笔记7——unique

姓名:李晨睿  学号:22021211235  电子工程学院

文章目录

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);

1

2

A = [9 2 9 5];

1

计算 A 的唯一值

C = unique(A)

1

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)

1

2

3

4

5

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)

1

C=4×3 table

Age Height Weight

___ ______ ______

Bob      38      64      131 

Fred      38      71      176 

George    40      67      185 

Betty    43      69      163 

1

2

3

4

在第一个变量 Age 中查找具有唯一值的表行。如果只希望一个表变量包含唯一值,可以使用 unique 返回的索引从表中提取这些行。

[C,ia] = unique(A.Age);

B = A(ia,:)

1

2

B=3×3 table

              Age    Height    Weight

              ___    ______    ______

    Fred      38      71      176 

    George    40      67      185 

    Betty    43      69      163 

1

2

3

4

5

6

7

唯一值及其索引

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

A = [9 2 9 5];

计算 A 的唯一值以及索引向量 ia 和 ic,这样 C = A(ia) 和 A = C(ic)。

[C, ia, ic] = unique(A)

1

C = 1×3

2    5    9

1

ia = 3×1

2

4

1

1

2

3

ic = 4×1

3

1

3

2

1

2

3

4

矩阵中的唯一行

创建一个包含某些重复行的 10×3 矩阵。

A = randi(3,10,3)

1

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

1

2

3

4

5

6

7

8

9

10

基于前两列的数据查找 A 中的唯一行。指定三个输出以返回索引向量 ia 和 ic。

[C,ia,ic] = unique(A(:,1:2),'rows')

1

C = 7×2

1    1

1    2

1    3

2    3

3    1

3    2

3    3

1

2

3

4

5

6

7

ia = 7×1

6

7

3

5

1

4

2

1

2

3

4

5

6

7

ic = 10×1

5

7

3

6

4

1

2

4

7

7

1

2

3

4

5

6

7

8

9

10

使用 ia 对 A 进行索引并检索包含前两列中元素的唯一组合的行。

uA = A(ia,:)

1

uA = 7×3

1    1    3

1    2    3

1    3    3

2    3    3

3    1    2

3    2    3

3    3    1

1

2

3

4

5

6

7

唯一元素的计数

查找向量中的唯一元素,然后使用 accumarray 计算每个唯一元素出现的次数。

创建一个由 1 到 5 的随机整数组成的向量。

a = randi([1 5],200,1);

1

查找向量中的唯一元素。返回索引向量 ia 和 ic。

[C,ia,ic] = unique(a);

1

计算 C 中的每个元素在 a 中出现的次数。将 ic 指定为 accumarray 的第一个输入,将 1 指定为第二个输入,以便函数计算 ic 中的重复下标。汇总结果。

a_counts = accumarray(ic,1);

value_counts = [C, a_counts]

1

2

value_counts = 5×2

1    46

2    36

3    38

4    39

5    41

1

2

3

4

5

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')

1

2

C = 1×3

9    2    5

1

ia = 3×1

1

2

4

1

2

3

ic = 4×1

1

2

1

3

1

2

3

4

此外,还可以指定 ‘sorted’ 顺序。

[C, ia, ic] = unique(A,'sorted')

1

C = 1×3

2    5    9

1

ia = 3×1

2

4

1

1

2

3

ic = 4×1

3

1

3

2

1

2

3

4

含有 NaN 的数组中的唯一值

定义一个包含 NaN 的向量。

A = [5 5 NaN NaN];

1

计算 A 的唯一值。

C = unique(A)

1

C = 1×3

5  NaN  NaN

1

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)

1

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

1

2

3

4

5

6

7

8

9

10

基于前两列的数据查找 A 中的唯一行。指定三个输出以返回索引向量 ia 和 ic。

[C,ia,ic] = unique(A(:,1:2),'rows')

1

C = 7×2

1    1

1    2

1    3

2    3

3    1

3    2

3    3

1

2

3

4

5

6

7

ia = 7×1

6

7

3

5

1

4

2

1

2

3

4

5

6

7

ic = 10×1

5

7

3

6

4

1

2

4

7

7

1

2

3

4

5

6

7

8

9

10

使用 ia 对 A 进行索引并检索包含前两列中元素的唯一组合的行。

uA = A(ia,:)

1

uA = 7×3

1    1    3

1    2    3

1    3    3

2    3    3

3    1    2

3    2    3

3    3    1

1

2

3

4

5

6

7

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

————————————————

版权声明:本文为CSDN博主「i_can_do_nothing」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/i_can_do_nothing/article/details/128259840

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容