Find the position of the first non-zero value in a matrix

5 次查看(过去 30 天)
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!

采纳的回答

KSSV
KSSV 2021-4-30
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 个评论
KSSV
KSSV 2021-5-1
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.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by