MATLAB Answers

0

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

Asked by Benson Gou on 8 Apr 2019
Latest activity Commented on by 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.

1 Answer

Answer by Akira Agata
on 8 Apr 2019
 Accepted Answer

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

@Akira, Thanks a lot for your valuable suggestions. Your methods work very well. Benson.

Sign in to comment.