我正在使用MATLAB。我有一个8x1000
矩阵,我想要一个程序,它会给我一个8x1
矩阵,其中每个条目计算8x1000
矩阵的相应行中非零项的数量。
答案 0 :(得分:7)
您可以通过简单地将数据转换为之前的逻辑来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
答案 1 :(得分:5)
您可以使用matrix-multiplication
-
out = (A~=0)*ones(size(A,2),1) %// A is the input matrix
答案 2 :(得分:0)
更深奥的版本可以将accumarray
和bsxfun
与nnz
一起用作为输入矩阵A
的每个列/组应用值的函数。不如使用sum
和矩阵乘法那样有效,但仍然是一种思考方法:):
B = bsxfun(@times, 1:size(A,1), ones(size(A,2),1)).';
out = accumarray(B(:), A(:), [], @nnz);