matlab去重函数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) 返回与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,:)。
  • [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'选项不支持类别数组、日期时间数组、持续时间数组、日历持续时间数组、表或时间表。

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

推荐阅读更多精彩内容