簡體   English   中英

計算矩陣每行中的非零元素

[英]Count non-zero elements in every row of matrix

我正在使用MATLAB。 我有一個8x1000矩陣,我想要一個程序,它將給我一個8x1矩陣,其中每個條目計算8x1000矩陣的相應行中的非零條目的數量。

您可以通過簡單地將數據轉換為之前的邏輯來sum每行中的非零元素。

%// example data
A = randi(10,8,1000)-1;

%// count sum up non-zeros in every row
result = sum(logical(A),2)

result =

   904
   897
   909
   895
   885
   901
   903
   873

你可以使用matrix-multiplication -

out = (A~=0)*ones(size(A,2),1)  %// A is the input matrix

更深奧的版本可以使用accumarraybsxfun以及nnz作為將值應用於輸入矩陣A每個列/組的函數。 不如使用sum和矩陣乘法一樣有效,但仍然是一種思考方法:):

B = bsxfun(@times, 1:size(A,1), ones(size(A,2),1)).';
out = accumarray(B(:), A(:), [], @nnz);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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