我有一個包含兩列的表格,如下所示:
1 10
1 10
2 30
2 45
3 8
3 8
....
我如何(在 Matlab 或 Octave 中)計算不同值的數量——即第一列中每個值的第二列中唯一值的數量——并顯示以下內容?
1 1
2 2
3 1
uj5u.com熱心網友回復:
您可以通過幾個步驟做到這一點
查找所有唯一行,即兩列的唯一組合。該
unique功能可以選擇執行此操作c = unique( a, 'rows' );在第 1 列中找到唯一值,這些是您輸出的第一列
u = unique( c(:,1) );回圈遍歷 中的唯一值
u,并檢查第 1 列中有多少行匹配c(即有多少唯一組合使用輸入中的第一個值a)。您可以使用arrayfun簡潔的方式執行此操作,或者一個簡單的回圈可以作業n = arrayfun( @(x) nnz(x==c(:,1)), u );
現在您可以通過組合u和n
out = [u, n];
這為您的示例提供了所需的結果
uj5u.com熱心網友回復:
這是一種使用uniqueand的方法accumarray:
x = [1 10; 1 10; 2 30; 2 45; 3 8; 3 8];
[u, ~, w] = unique(x(:,1));
n = accumarray(w, x(:,2), [], @(t) numel(unique(t)));
result = [u n];
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414906.html
標籤:
