【发布时间】:2021-02-14 18:31:12
【问题描述】:
我有一个矩阵是:
matrix = [1, 0, 0;
0, 1, 1;
0, 0, 1];
我想逐列遍历矩阵并获取该列中出现的第一个 1 的行号。所以,结果应该是:
[1, 2, 2]
到目前为止我的想法是:
for i = matrix
if i == 1
%store the row No. to an array.
end
end
【问题讨论】:
-
如果您的矩阵中只有零和一,那么
[~,r]= max(A)将完成这项工作。否则[~,r]=max(A==1)也请检查链接的副本以获取更多想法。 -
我会使用
[~,Indices] = max(matrix,[],2)来确保选择最左边的索引。 -
@MichaelTr7 OP 对每列中第一次出现 1 的行下标感兴趣,即
[1,2,2]。而max(matrix,[],2)返回每行中第一次出现 1 的列下标。即[1,2,3] -
@Sandar Usama 我的错,我错了。谢谢指正。
-
@MichaelTr7 @SardarUsama,然后您可以转置矩阵。
[~,Indices] = max(matrix', [], 2)完全返回[1, 2, 2]。
标签: matlab for-loop matrix iteration