我想计算除-1
以外的矩阵中不同数字的数量。例如,以下矩阵中的不同数字为6
,因为不同的数字为8 9 3 5 2 1
-1 -1 8 9
3 5 -1 3
2 3 3 1
如何使用MATLAB
执行此操作?
答案 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)
获取这些唯一数字的计数。