MATLAB Answers


iterations while in loop

Asked by harley
on 27 Aug 2013

having trouble making this iterate for each increment of Vn, it goes straight to Vn = 30, i want it to also to calc a new Re, f, dPloss_1, Va & Q with each new iteration.

D = 0.1; L = 10; 
A = 0.25*pi*D^2; 
e = 0.0015e-3; 
rho = 998; 
nu = 1.01e-6;  
eoverD = e/D;
alpha = 0.1;
Vo = 2;
    for Vn = 2:0.1:30;% iteration length. 
    Re = (Vo.*D) / nu;
    if Re < 2300
    f = 64 / Re;
       darbyFormula = @(x) 1/sqrt(x)+2*log10(eoverD/3.7 + 2.51/Re/sqrt(x));
    f = fzero(darbyFormula,0.01);
    dPloss_1 = (f*rho*(L/D)) * ((Vn*Vo)./2);
    Va = (alpha*Vn)+((1-alpha)*Vo); 
    Vo = Va;
    end % 


on 27 Aug 2013

code edited, yes i want it to update at each iteration saving previous values of Re, f, dPloss_1, Va and Q etc.

but what is the problem?

on 27 Aug 2013

David actually works fine, sorry for the confusion.


No products are associated with this question.

1 Answer

Answer by Jan Simon
on 27 Aug 2013
 Accepted answer

No, of course it iterates through 2:0.1:30. You can test this easily either by using the debugger or by a disp(Vn) command inside the loop.

The problem might be, that the result is overwritten in each iteration. So try:

Vn_pool = 2:0.1:30;
Q = zeros(1, length(Vn_pool)));  % pre-allocate!!!
for k = 1:length(Vn_pool)
  Vn = Vn_pool(k);
  Q(k) = Va * A;  % same for the other values wanted as outputs

  1 Comment

on 27 Aug 2013

yes your right, its over writing each iteration, thanks.

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!