【问题标题】:How can i simplify this for loop?我怎样才能简化这个for循环?
【发布时间】:2017-04-09 22:51:27
【问题描述】:

我需要用 90 个元素的周期为不同的 phiStart 和 phiExit 值填充一个 360 个元素的矩阵:

flute    = 4;
phiStart = 0;
phiExit  = 90;
phiDelta = 1;
phiPitch = 360 / flute;

for g = 0:abs(phiExit - phiStart);
    for k = 0:abs(phiExit - phiStart);
        for j = 0:abs(phiExit - phiStart);
            for m = 0:abs(phiExit - phiStart);
                for i = 0:abs(phiExit - phiStart);
                    answerA = phiStart + i * phiDelta;
                    phi(i+1) = answerA;
                end
                answerA = phiStart + m * phiDelta;
                phi(m + phiPitch) = answerA;
            end
            answerA = phiStart + j * phiDelta;
            phi(j + 2 * phiPitch) = answerA;
        end
        answerA = phiStart + k * phiDelta;
        phi(k + 3 * phiPitch) = answerA;
    end
    answerA = phiStart + g * phiDelta;
    phi(g + 4 * phiPitch) = answerA;
end

b = (phi > 0);  % dummy matrix for edge cofficients
h = feedRate * sin(phi / 180 * pi);

【问题讨论】:

  • 这是什么语言? (Matlab?)
  • 'phiStart' 和 'phiDelta' 是常量。为什么需要嵌套循环?是否有任何“phi”值被一次又一次地覆盖?
  • 是的 phiStart 和 phiExit 是我定义的常量。我需要填充这样的矩阵。假设一个有 15 个成员的行矩阵。 phiStart=2 phiExit=4 并且周期是 5 -----> 因此矩阵应该是 [2 3 4 0 0 2 3 4 0 0 2 3 4 0 0] 我需要以最简单的方式解决这个矩阵360会员 语言是matlab。感谢您的帮助

标签: algorithm loops for-loop simplify


【解决方案1】:

对不起,如果这没有意义(只是想提供帮助),我什至不知道它是用什么语言编写的,但我在原始代码中读到的内容指向类似

for i = 0:abs(phiExit - phiStart);
    answerA = phiStart + i * phiDelta;
    for j = 0:abs(flute - 1)
        phi(i + j * phiPitch) = answerA;
    end
end

【讨论】:

  • 非常感谢您的帮助。这是解决方案
猜你喜欢
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2021-07-14
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多