簡體   English   中英

計算矩陣每列中的非零條目

[英]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

我不知道如何做到這一點,因為sizelengthnumel似乎不符合要求。 也許最好先刪除零條目?

這很簡單

> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM