【问题标题】:Nested For loop not reaching the end of my matrices [duplicate]嵌套的 For 循环没有到达我的矩阵的末尾 [重复]
【发布时间】:2013-11-24 18:08:52
【问题描述】:

我正在使用嵌套的 for 循环来执行以下功能: 我将在 TranLog 矩阵(W X N 大小)中逐列查找哪一行具有非零值 基于这个非零值在 TranLog 中的行位置,我在矩阵 Order 中调用与该行 # 关联的向量。

for循环如下:

for jj=1:W;
    for ii=1:N;
        if TranLog(ii,jj)>0.5
            test=Order(ii,:);
        end
    end
end 

当我运行此程序时,输出的向量数量少于应有的数量。例如:如果 Tranlog 是 23X5 并且 Order 是 23X6,如果有 23 个非零分布在整个 TranLog 矩阵中(TranLog 中每行有一个非零值)我只能从 Order 矩阵中获得 13 个输出向量。我不确定为什么这没有完成,我没有收到错误,但它没有输出我期望的那么多向量。

【问题讨论】:

  • 包含一个标签来指示您使用的语言可能会有所帮助。
  • 在我看来,您的循环将遍历 N * W 数组,而不是 W * N 数组,考虑到术语 TranLog(ii,jj) 中的索引顺序。
  • 您的代码完全发布在this very similar question 中。这是一个重复的帐户,或者您有相同的家庭作业。无论哪种方式都不好!
  • 问答@chappjc 指出这确实是来自重复帐户的重复问题。严重糟糕的形式。

标签: matlab for-loop matrix indexing nested


【解决方案1】:

这就是问题所在。您的矩阵有 W 行和 N 列,但 W 索引 jj 是索引列而不是行在第 3 行。相反的情况发生在 iiN 的索引。切换这些,你应该很高兴!

for jj=1:W;
    for ii=1:N;
        if TranLog(jj,ii)>0.5
            test=Order(ii,:);
        end
    end
end 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    相关资源
    最近更新 更多