在matlab中计算不同的唯一数字

时间:2014-05-24 07:59:14

标签: matlab matrix unique

我想计算除-1以外的矩阵中不同数字的数量。例如,以下矩阵中的不同数字为6,因为不同的数字为8 9 3 5 2 1

   -1  -1  8  9   
    3   5 -1  3
    2   3  3  1 

如何使用MATLAB执行此操作?

1 个答案:

答案 0 :(得分:6)

予。使用unique

使用unique及其'stable'选项保留订单 -

A1 = reshape(A.',1,[])  %// A is your input matrix
out = unique(A1(A1~=-1),'stable')  %// out is your desired output

输出 -

out =
     8     9     3     5     2     1

如果您不关心保留唯一号码的顺序,则可以使用unique而不使用'stable'选项 -

A1 = unique(A)
out = A1(A1~=-1)

如果你进入那些可以转换为密集的单行 -

out = nonzeros(unique(A).*(unique(A)~=-1))

II。使用 setdiff

使用setdiff'stable'选项保留订单 -

A1 = reshape(A.',1,[])  %// A is your input matrix
out = setdiff(A1,-1,'stable')  %// out is your desired output

使用默认版本setdiff的单行,如果您不关心订单 -

out = setdiff(A,-1)

最后,您可以使用numel(out)获取这些唯一数字的计数。