Tra*_*man 2 matlab unique matrix
我想计算矩阵中不同数字的数量-1.例如,以下矩阵中6的不同数字是不同的数字8 9 3 5 2 1
-1 -1 8 9
3 5 -1 3
2 3 3 1
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做MATLAB?
I.使用 unique
使用unique其'stable'选项保持订单 -
A1 = reshape(A.',1,[]) %// A is your input matrix
out = unique(A1(A1~=-1),'stable') %// out is your desired output
Run Code Online (Sandbox Code Playgroud)
输出 -
out =
8 9 3 5 2 1
Run Code Online (Sandbox Code Playgroud)
如果您不关心保留唯一编号的顺序,则可以unique不使用'stable'选项使用-
A1 = unique(A)
out = A1(A1~=-1)
Run Code Online (Sandbox Code Playgroud)
如果你进入那些可以转换为密集的单行 -
out = nonzeros(unique(A).*(unique(A)~=-1))
Run Code Online (Sandbox Code Playgroud)
II.运用setdiff
使用setdiff与'stable'选项,以保持秩序-
A1 = reshape(A.',1,[]) %// A is your input matrix
out = setdiff(A1,-1,'stable') %// out is your desired output
Run Code Online (Sandbox Code Playgroud)
单行使用默认版本setdiff,如果你不关心订单 -
out = setdiff(A,-1)
Run Code Online (Sandbox Code Playgroud)
最后,您可以获得这些唯一数字的计数numel(out).