Matlab 查找非零行索引

Matlab 查找非零行索引,matlab,Matlab,我有一个矩阵z(比如200x5),其中每行只有一个元素是非零的。不使用for循环查找索引的最有效方法是什么 例如: z=[1 0 0;0 0 1]; a=findRow(z) 其中a应显示: [1 3] 结果证明“find”是解决方案,除了我必须转置z: [rowidx,~]=find(z'); 编辑:必须首先转置它,因为matlab首先查找列中的内容。因此,如果你不转置,行索引的顺序是关闭的。 < P>如果你有一个矩阵,主要是代码>0</Case>元素,那么你可以考虑在这样的情况下使用空

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

例如:

z=[1 0 0;0 0 1];
a=findRow(z)
其中a应显示:

[1 3]

结果证明“find”是解决方案,除了我必须转置z:

[rowidx,~]=find(z');

编辑:必须首先转置它,因为matlab首先查找列中的内容。因此,如果你不转置,行索引的顺序是关闭的。

< P>如果你有一个矩阵,主要是代码>0</Case>元素,那么你可以考虑在这样的情况下使用空间上有效的矩阵:

z = sparse([1,0,0;0,0,1]);
您仍然可以使用
find
获得答案

[~,idx] = find(z);

你试过什么?我们应该做你的工作/家庭作业吗?之后我们会收到您的付款/文凭吗?自从我找到答案,我是否也应该删除它?“我们不建议删除带答案的问题,因为这样做会剥夺未来读者的此类知识”。我还发现有趣的是,人们很快就投了反对票,而不是赞成票。@Sachin_-ruk你是这么认为的吗?发布链接,我们将其标记为duplicate@Dan否,返回并再次查看“查找”文档。如果我已经获得了反对票,我应该删除这个吗?取决于你,如果你觉得这个问题实际上没有帮助人们找到答案,下面的答案没有为你添加任何内容,那么就删除它,为什么不使用第二个输出,而不是转置?我尝试了一个更大的矩阵。rowidx的显示顺序是不同的(matlab首先查找things列)!你应该把它加到你的答案中(举个小例子)