内循环工作 - 外循环不正确?

时间:2013-10-20 23:36:09

标签: matlab loops for-loop iteration

我成功解决了我遇到的问题,并正在寻找有关外部for循环结构的建议。我的内循环正常工作。我希望每次迭代使用不同的高度(h值)重复11次计算6次。在J循环的迭代中,h增加到它的原始值+ 2 * h。 K循环中的POI取决于h并且已定义但为了可读性而被省略。如有必要,可以使用完整脚本进行更新。 POI的定义应该在嵌套循环中吗?

h = 0.5985;
GroundDistance = 18.75;
SouthAngle = 57;
TreeHeight = 14;
POI = TreeHeight-h;
BuildingElevationAng = atand(POI/GroundDistance);
a=0.265;
TreeLengthRHS = 15.89+a;
h = 0.5985;

    X(1,1)=h;
    for k = 2:6;
      X(k) = X(k-1) + (X(1)*2);
    end

for J = 1:6
  h=h+(2*h);
     for K  = 1:11
       TreeLengthTest(K) = TreeLengthRHS + (2*(K-1)*a);
       TreeLengthLHS = 75 - TreeLengthTest(K);
       AngleBx(K) = atand(TreeLengthLHS/GroundDistance);
       AngleCx(K) = atand(TreeLengthTest(K)/GroundDistance); %wasTreeLengthRHS
       DistanceAx(K) = GroundDistance/cosd(SouthAngle);
       DistanceBx(K) = GroundDistance/cosd(AngleBx(K));
       DistanceCx(K) = GroundDistance/cosd(AngleCx(K));
       AltAngleA(K) = atand(POI/DistanceAx(K));
       AltAngleB(K) = atand(POI/DistanceBx(K));
       AltAngleC(K) = atand(POI/DistanceCx(K));
       AzimuthA = 0;
       AzimuthB = (-AngleBx)-SouthAngle;
       AzimuthC = AngleCx-SouthAngle;
       end
end

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

嗯,有一些我不确定的事情,但我会给出答案,看看这是否有帮助。 POI的定义不必在内循环内,因为POI对于这11个计算中的每一个都是常量。但是,我认为您定义h有点不正确,因为您永远不会使用最初定义的h值。由于您已经拥有X向量,如果您尝试嵌套for循环,例如:

for J = 1:6
    POI = TreeHeight - X(J);
    for K = 1:11
        ...All your code here...
    end
end