Effacer les filtres
Effacer les filtres

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

1 vue (au cours des 30 derniers jours)
Benson Gou
Benson Gou le 8 Avr 2019
Commenté : Benson Gou le 8 Avr 2019
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

Réponse acceptée

Akira Agata
Akira Agata le 8 Avr 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);
  1 commentaire
Benson Gou
Benson Gou le 8 Avr 2019
@Akira, Thanks a lot for your valuable suggestions. Your methods work very well. Benson.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Sparse Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by