Inner for loop working - problems with outer for loop
2 次查看(过去 30 天)
显示 更早的评论
I managed to advance with a problem I was having and am looking for some advice on structuring my outer for loop. My inner loop works correctly. I want to repeat the 11 calculations 6 times using a different height (value of h) for each iteration. On the iterations of the J loop h increases to it's original value + 2*h. POI in the K loop depends on h. Should it be within the nested loop?
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
Any help is greatly appreciated.
0 个评论
采纳的回答
Image Analyst
2013-10-20
I don't see POI defined anywhere - does it use global variables or something? Is it a function or a variable? Anyway, if POI does not depend on K at all, then it can be pulled out of the K loop and be assigned in the h loop. If POI is a function, then do something like
thisPOI = POI;
inside the h loop but outside the K loop, and then use thisPOI everywhere you see POI in the K loop.
6 个评论
Image Analyst
2013-10-21
编辑:Image Analyst
2013-10-21
Oh no! That's going to be a major major problem! Debugging via Answers forum discussions is a very slow way to debug a program. I suggest you take a look at http://blogs.mathworks.com/videos/2012/07/03/debugging-in-matlab/ which will get you up to speed in just a few minutes - far faster than the hour it took me to respond to your last reply. It's something you're going to have to learn eventually anyway, so might as well take the 5 minutes now and do it. No one can get very far in MATLAB without learning how to debug their own code.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!