[英]Count non-zero entries in each column of a matrix
如果我有一個矩陣:
A = [1 2 3 4 5; 1 1 6 1 2; 0 0 9 0 1]
A =
1 2 3 4 5
1 1 6 1 2
0 0 9 0 1
如何計算每列的非零條目數? 例如,此矩陣的所需輸出將是:
2,2,3,2,3
我不知道如何做到這一點,因為size
, length
或numel
似乎不符合要求。 也許最好先刪除零條目?
這很簡單
> A ~= 0
ans =
1 1 1 1 1
1 1 1 1 1
0 0 1 0 1
> sum(A ~= 0, 1)
ans =
2 2 3 2 3
這是我可以建議的另一個解決方案,它對於密集矩陣而言速度不是很快,但對於稀疏矩陣來說速度非常快(感謝@ user1877862!)。 這也可以模仿人們如何用C或Java等編譯語言來實現這一點,也可能用於研究目的。 首先找到非零的行和列位置,然后僅對列位置執行直方圖,以計算每列中看到非零的頻率。 換一種說法:
[~,col] = find(A ~= 0);
counts = histc(col, 1:size(A,2));
find
輸出矩陣滿足函數參數內部某些布爾條件的行和列位置。 我們忽略第一個輸出,因為我們不關心行位置。
我們得到的輸出是:
counts =
2
2
3
2
3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.