simple "While Loop" questions

Asked by Selcuk Fidan

Selcuk Fidan (view profile)

on 21 Oct 2013
Latest activity Commented on by Selcuk Fidan

Selcuk Fidan (view profile)

on 21 Oct 2013
Accepted Answer by Image Analyst

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];

Tags

Answer by Image Analyst

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!

Answer by FRANCISCO JAVIER

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.