【问题标题】:Get row number of the first occurrence of 1 in each column [duplicate]获取每列中第一次出现1的行号[重复]
【发布时间】: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


【解决方案1】:

试试

row = zeros(size(matrix,2),1);
for column = 1:size(matrix,2)
    row(column) = find(matrix(:,column),1);
end

没有循环可能有更好的方法..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多