MATLAB Answers

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

2 views (last 30 days)
Benson Gou
Benson Gou on 8 Apr 2019
Commented: Benson Gou on 8 Apr 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

  0 Comments

Sign in to comment.

Accepted Answer

Akira Agata
Akira Agata on 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);

  1 Comment

Benson Gou
Benson Gou on 8 Apr 2019
@Akira, Thanks a lot for your valuable suggestions. Your methods work very well. Benson.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!