我有一个矩阵z(比如200x5),其中每行只有一个元素非零。在不使用for循环的情况下找到该索引的最有效方法是什么。
例如:
z=[1 0 0;0 0 1];
a=findRow(z)
应显示a:
[1 3]
答案 0 :(得分:3)
事实证明'find'是解决方案,除了我必须转置z:
[rowidx,~]=find(z');
编辑:必须首先转置它,因为matlab首先找到了事物列。因此,如果不进行转置,则行索引的顺序将关闭。
答案 1 :(得分:2)
If you have a matrix with mostly 0
elements, you could consider using sparse
matrices which are designed to be spatially efficient in such cases:
z = sparse([1,0,0;0,0,1]);
You can still just use find
to get your answer
[~,idx] = find(z);