How to find the last nonzero entry in all rows of a sparse matrix?

1 visualizzazione (ultimi 30 giorni)
Dear All,
I need to find out the last nonzero entry in each row of a sparase matrix A. Say A=[1 3 0 0 0 0;0 4 2 3 0 0;5 0 0 1 4 0]. The location of last nonzero entry in all rows of A are [2 4 5].
Thanks a lot in advance.
Benson

Risposta accettata

Akira Agata
Akira Agata il 8 Apr 2019
How about the following?
[Solution 1]
A = [1 3 0 0 0 0;0 4 2 3 0 0;5 0 0 1 4 0];
pos = nan(size(A,1),1);
for kk = 1:size(A,1)
pos(kk) = find(A(kk,:),1,'last');
end
[Solution 2]
A = [1 3 0 0 0 0;0 4 2 3 0 0;5 0 0 1 4 0];
C = mat2cell(A,ones(1,size(A,1)));
pos = cellfun(@(x) find(x,1,'last'),C);

Più risposte (0)

Categorie

Scopri di più su Sparse Matrices in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by