Find the position of the first non-zero value in a matrix
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Giannis Nikolopoulos
el 30 de Abr. de 2021
Comentada: Giannis Nikolopoulos
el 1 de Mayo de 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 comentarios
Respuesta aceptada
KSSV
el 30 de Abr. de 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 comentarios
KSSV
el 1 de Mayo de 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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
