## simple "While Loop" questions

### Selcuk Fidan (view profile)

on 21 Oct 2013
Latest activity Commented on by Selcuk Fidan

on 21 Oct 2013

### Image Analyst (view profile)

Can anyone tell me why this while loop doesn't give me what I want? I want to get simple values such that starting from 0.001 to 0.01 with increment 0.001,0.01 to 0.1 with increment of 0.01,0.1 to 1 with increment 0.1, and 1 to 10 with increment 1. Second question of mine, when I have vsl ==0.1, why it doesn't go into the if loop? What am doing wrong? Thank you!
%% Calculate the gas fraction vsl = 0.001; vsl1 = vsl; vslSave = [];
while vsl<=10
if vsl >=0.001 && vsl<=0.01
increment = 0.001;
elseif vsl >=0.01 && vsl< 0.1
increment = 0.01;
elseif vsl >=0.1 && vsl<=1.0
increment = 0.1;
else
increment = 1;
end
if (vsl==0.1)
increment = 0.1;
end
vsl = vsl + increment;
vslSave = [vslSave;vsl];
end
vslSave = [vsl1;vslSave];

### Image Analyst (view profile)

on 21 Oct 2013
Edited by Image Analyst

### Image Analyst (view profile)

on 21 Oct 2013

vsl will never equal 0.1. See the FAQ: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F And you don't need all those double ranges - checking if it's in the middle. Just check if it's less than the number - it will go into the first one it meets the criteria for.
% Calculate the gas fraction
vsl = 0.001;
vsl1 = vsl;
vslSave = [];
while vsl<=10
if vsl < 0.01
increment = 0.001;
elseif vsl < 0.1
increment = 0.01;
elseif vsl < 1.0
increment = 0.1;
else
increment = 1;
end
vsl = vsl + increment;
vslSave = [vslSave;vsl];
end
vslSave = [vsl1;vslSave]

Selcuk Fidan

### Selcuk Fidan (view profile)

on 21 Oct 2013
Thank you for the info!

### FRANCISCO JAVIER (view profile)

on 21 Oct 2013

function [vslSave]=prueba(x)
vsl=x; vslSave=[];
while vsl<=10
if vsl >=0.001 && vsl<=0.01
increment = 0.001;
elseif vsl >=0.01 && vsl< 0.1
increment = 0.01;
elseif vsl >=0.1 && vsl<=1.0
increment = 0.1;
else
increment = 1;
end
if (vsl==0.1)
increment = 0.1;
end
vsl = vsl + increment;
vslSave = [vslSave; vsl];
end
end

Selcuk Fidan

### Selcuk Fidan (view profile)

on 21 Oct 2013
Hi Francisco,
Thank you for spending time for my question. However, I don't get what you are trying to do? You are just putting my code and serving me as a function, sorry this is not what I asked! I suggest Read answer by Image Analyst.