## iterations while in loop

on 27 Aug 2013

### Jan Simon (view profile)

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;
else
darbyFormula = @(x) 1/sqrt(x)+2*log10(eoverD/3.7 + 2.51/Re/sqrt(x));
f = fzero(darbyFormula,0.01);
end
%
dPloss_1 = (f*rho*(L/D)) * ((Vn*Vo)./2);
Va = (alpha*Vn)+((1-alpha)*Vo);
Q=Va*A;
Vo = Va;
end %
```

harley

### harley (view profile)

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.

David Sanchez

### David Sanchez (view profile)

on 27 Aug 2013

but what is the problem?

harley

### harley (view profile)

on 27 Aug 2013

David actually works fine, sorry for the confusion.

## Products

No products are associated with this question.

### Jan Simon (view profile)

on 27 Aug 2013

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
end
```

harley

### harley (view profile)

on 27 Aug 2013

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

#### Join the 15-year community celebration.

Play games and win prizes!

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