# Repeating for loop until getting a list of solution

3 views (last 30 days)
Hi to all
I'm not that good in Matlab and I tried to learn it. I used for loop to create a solution for each value of (n) and repeating the for loop. The for-loop is from 1 to 8760 while n is from 0 to 1 with increament of 0.1.
I want to repeat the for-loop for each (n) and finally make a vecto of [n, solution from for-loop]. Attached flow chart may explain more about what I want. Abdullah Al Shereiqi on 17 Mar 2020
Thanks Saruram and Rik for quick support.
I tried to run the code as per Rik comment. But, the value of (s) reach beyond 1 (more than 1000)!!
s=0;
for apv = 1:length(P_wind)
if P_PV(apv)==0 ;
N_PV_1(apv)=0;
else
N_PV_1(apv)= ceil (((s*P_ref(apv)))./(P_PV(apv)));
end
if s==1;
break
else
s = s+0.01
end
end
Rik on 17 Mar 2020
Apart from the suggestion from Guillaume; I forgot to account for floating point rounding errors.
s=0;
for k=1:10
s=s+0.1;
end
clc
fprintf('%.53f\n',s) %not quite equal to 1
The solution in this case is to use a tolerance:
s==1 %returns false, because s is 0.99999999999999988897769753748434595763683319091796875
abs(s-1)<=2*eps %returns true
Sriram Tadavarty on 17 Mar 2020
You could even break when s is greater than 1, example, the condition of if s > 1, can be placed, rather than s == 1 to deal with tolerance issues.
Or it can be directly placed a loop for 100 times, in each time 0.01 can be added.

Guillaume on 17 Mar 2020
If it's a flow chart you've been given, then you are entitled to complain loudly. That flow chart is very misleading. The layout is a more representative of a while loop than a for loop.
This is what you're meant to do:
for n = 0:0.1:1 %represented by 4 boxes on the flow chart! (n = 0, for-loop, n=1?, increment by 0.1)
%do calculation inside the loop (1 box on the chart)
end
%get a vector of solution (1 box on the chart)

Abdullah Al Shereiqi on 17 Mar 2020
Thanks to all of you; Saruram , Rik and Guillaume.
It seems working fine after using another for-loop (100 times).