MATLAB: How to iterate this

iteration

Hi,
I need to iterate a series of equation for a problem. In particular I want to iterate them for 12 times. For the very first iteration I want to put two conditions (Lambda1dotZero=0 and Lambda=0); then from the second iteration onward Lambda1dotzero must be equal to the value of Lambda1dotZero of the previous iteration + a certain value DeltaOmega (which I know, and is constant). The same for Lambda, which from the second iteration onward, must be equal to that equation that you see in the loop (Lambda(m)=…..) + the value of Lambda of the previous iteration. Sorry but I am very new in Matlab, and this is the code that I wrote:
for m=1:1:12
while m==1;
Lambda1dotZero(m)=0;
Lambda(m)=0;
Lambda1dot(m)=Lambda2dot*t_days+Lambda1dotZero(m);
Lambda(m)=Lambda2dot*t_days^2/2+Lambda1dotZero(m)*t_days+Lambda(m);
end
while m>1;
Lambda1dotZero(m)=Lambda1dotZero(m-1)+DeltaOmega;
Lambda1dot(m)=Lambda2dot*t_days+Lambda1dotZero(m);
Lambda(m)=Lambda2dot*t_days^2/2+Lambda1dotZero(m)*t_days+Lambda(m-1);
end
end
When I run it, it doesn't give me errors but takes a long time without giving any results. Maybe I have created an infinite loop. I don't know. Many thanks to anyone who will help me.
Regards
Gian

Best Answer

for m=1:1:12
if m==1
Lambda1dotZero(m)=0;
Lambda(m)=0;
Lambda1dot(m)=Lambda2dot*t_days+Lambda1dotZero(m);
Lambda(m)=Lambda2dot*t_days^2/2+Lambda1dotZero(m)*t_days+Lambda(m);
end
if m>1
Lambda1dotZero(m)=Lambda1dotZero(m-1)+DeltaOmega;
Lambda1dot(m)=Lambda2dot*t_days+Lambda1dotZero(m);
Lambda(m)=Lambda2dot*t_days^2/2+Lambda1dotZero(m)*t_days+Lambda(m-1);
end
end
Remember, a while loop executes its body until the condition is false and does not go on to the next section until then, but since m was not changing in the body, your while loop was infinite.