找到非零行索引

时间:2015-11-12 06:23:14

标签: matlab

我有一个矩阵z(比如200x5),其中每行只有一个元素非零。在不使用for循环的情况下找到该索引的最有效方法是什么。

例如:

z=[1 0 0;0 0 1];
a=findRow(z)

应显示a:

[1 3]

2 个答案:

答案 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);