Find the position of the first non-zero value in a matrix
    6 views (last 30 days)
  
       Show older comments
    
    Giannis Nikolopoulos
 on 30 Apr 2021
  
    
    
    
    
    Commented: Giannis Nikolopoulos
 on 1 May 2021
            Hello, I have the matrix of the image below and I want the position of the first non-zero value of the columns 2 until the end

i used the cumsum expression, it finds the first non-zero values:
out = mymatrix(cumsum(cumsum(mymatrix~=0)) == 1)
but when I do the find((mymatrix(cumsum(cumsum(mymatrix~=0)) == 1)) the result is not the desirable
Has someone any idea?
thanks in advance!
0 Comments
Accepted Answer
  KSSV
      
      
 on 30 Apr 2021
        A = rand(10) ; 
idx = randperm(10*10,80); 
A(idx) = 0 ; 
iwant = zeros(1,10) ; 
for i = 1:10
    iwant(i) = find(A(:,i),1) ;
end
iwant
3 Comments
  KSSV
      
      
 on 1 May 2021
				Hi yes you are right, sometimes it will not run. When there is no non-zero element in a column the positon will be empty and in that case it will trhrow werror. 
I am creating a demo random data for shwoing the solution to problem. To keep zeros randomly, I have used randperm. You can apply the solution to your data striaghtaway. 
More Answers (0)
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

