繁体   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