while
while loop to repeat when condition is true
collapse all in page
Syntax
while expression
statements
end
Description
example
while expression, statements, end evaluates an expression, and repeats the
execution of a group of statements in a loop while the expression is true. An expression
is true when its result is nonempty and contains only nonzero elements (logical or real
numeric). Otherwise, the expression is false.
Examples
collapse all
Repeat Statements Until Expression Is False
Use a while loop to calculate factorial(10).
n = 10;
f = n;
while n > 1
n = n-1;
f = f*n;
end
disp(['n! = ' num2str(f)])
n! = 3628800
Skip to Next Loop Iteration
Count the number of lines of code in the file magic.m. Skip blank lines and comments
using a continue statement. continue skips the remaining instructions in the while
loop and begins the next iteration.
fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
line = fgetl(fid);
if isempty(line) || strncmp(line,'%',1) || ~ischar(line)
continue
end
count = count + 1;
end
count
count = 31
fclose(fid);
Exit Loop Before Expression Is False
Sum a sequence of random numbers until the next random number is greater than an
upper limit. Then, exit the loop using a break statement.
limit = 0.8;
s = 0;
while 1
tmp = rand;
if tmp > limit
break
end
s = s + tmp;
end
More About
collapse all
Expression
An expression can include relational operators (such as < or ==) and logical operators
(such as &&, ||, or ~). Use the logical operators and and or to create compound
expressions. MATLAB evaluates compound expressions from left to right, adhering to
operator precedence rules.
Within the conditional expression of a while...end block, logical operators & and |
behave as short-circuit operators. This behavior is the same as && and ||, respectively.
Since && and || consistently short-circuit in conditional expressions and statements, it is
good practice to use && and || instead of & and | within the expression. For example,
x = 42;
while exist('myfunction.m','file') && (myfunction(x) >= pi)
disp('Expressions are true')
break
end
The first part of the expression evaluates to false. Therefore, MATLAB does not need to
evaluate the second part of the expression, which would result in an undefined function
error.
Tips
If you inadvertently create an infinite loop (that is, a loop that never ends on its
own), stop execution of the loop by pressing Ctrl+C.
If the conditional expression evaluates to a matrix, MATLAB evaluates the
statements only if all elements in the matrix are true (nonzero). To execute
statements if any element is true, wrap the expression in the any function.
To programmatically exit the loop, use a break statement. To skip the rest of the
instructions in the loop and begin the next iteration, use a continue statement.
When nesting a number of while statements, each while statement requires an
end keyword.