[英]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
更深奧的版本可以使用accumarray
和bsxfun
以及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.