1
我想計算矩陣中除-1
以外的不同數字的數量。例如在下面的矩陣中的不同數字6
爲不同的數字8 9 3 5 2 1
在matlab中計算不同的唯一數字
-1 -1 8 9
3 5 -1 3
2 3 3 1
我如何能做到這一點與MATLAB
?
我想計算矩陣中除-1
以外的不同數字的數量。例如在下面的矩陣中的不同數字6
爲不同的數字8 9 3 5 2 1
在matlab中計算不同的唯一數字
-1 -1 8 9
3 5 -1 3
2 3 3 1
我如何能做到這一點與MATLAB
?
1.使用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)
獲得這些唯一編號的計數。
Hei @Divakar,你能解釋一下你的代碼/答案嗎? 「獨特」是做什麼的?和'穩定'?和'reshape'部分中的空括號? - 每當你有時間 - :)謝謝! PS:你當然有我的投票! –
嗨@SergioHaram!那麼重塑的部分就是將'A'作爲一個向量,其中包含以行優先順序排列的元素,'stable'選項則保留那個整形向量中唯一值的順序,因爲它不會是'8 9 3 5 2 1「,否則。感謝一如既往的投票! :) – Divakar
感謝澄清! –