我正在使用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
矩阵乘法
-out = (A~=0)*ones(size(A,2),1) %// A is the input matrix
accumarray
和 bsxfun
,并将 nnz
作为应用值到输入矩阵 A
的每列/组的函数。虽然不如使用 sum
和矩阵乘法高效,但仍是一个值得思考的方法 :):B = bsxfun(@times, 1:size(A,1), ones(size(A,2),1)).';
out = accumarray(B(:), A(:), [], @nnz);