Find the position of the first non-zero value in a matrix
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Giannis Nikolopoulos
il 30 Apr 2021
Commentato: Giannis Nikolopoulos
il 1 Mag 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 Commenti
Risposta accettata
KSSV
il 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 Commenti
KSSV
il 1 Mag 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
