MATLAB Answers

Matrix Indices Problem

1 view (last 30 days)
mutt
mutt on 15 Aug 2011
Given a matrix e.g. A = [0 1 2 0 0; 0 3 4 5 0; 6 7 8 9 10; 0 0 0 11 0]
what MATLAB code will generate a vector of the column numbers of the first non-zero element in each row?
For this example the vector returned should be: [2;2;1;4]

Accepted Answer

Sean de Wolski
Sean de Wolski on 15 Aug 2011
[junk, idx] = max(logical(A),[],2)
idx will be you index vector.
  6 Comments
mutt
mutt on 16 Aug 2011
Thanks to everyone for contributing. In practice I wouldn't use the sort approach because my real matrix is very large.

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 15 Aug 2011
size(A,2)+1-sum(cumsum(A,2)~=0,2)
more
(sum(cumsum(A')==0)+1)'
  2 Comments
Andrei Bobrov
Andrei Bobrov on 16 Aug 2011
Hi Mutt! my variant:
sum(cumsum(flipud(A'))>0)'

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!