How do I find the index of the first element equal to 0 for each row of a matrix in a fast way
5 次查看(过去 30 天)
显示 更早的评论
Hi,
I have a NxL matrix, how can I obtain a vector containing the index of the first element equal to 0 of each row of the matrix in in a fast way? Each row always has an element equal to 0 so don't worry about possible errors of that kind. I would like to use the command 'find' in such a way that with one single call it gives me back the entire vector idx which, at the moment, I obtain in the following way:
(M is the given matrix)
idx=zeros(N,1)
for k=1:N
idx(k)=find(M(k,:)==0,1);
end
0 个评论
回答(2 个)
Walter Roberson
2022-6-29
You cannot do it with a single find()
A vectorized way to do it is
M = ones(5,10); M(randperm(50,10)) = 0;
M
idx = sum(cumprod(logical(M),2),2)+1;
idx
1 个评论
Walter Roberson
2022-6-29
Sometimes when people have these kinds of questions, their setup does not have negative values or complex values. In that case, you can get the results in a single call using min() with two outputs.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!