MATLAB Function Reference
while

Repeat statements an indefinite number of times

Syntax

• while expression
statements
end

Description

while repeats statements an indefinite number of times. The statements are executed while the real part of expression has all nonzero elements.
expression is usually of the form

• expression rel_op expression

where rel_op is ==, <, >, <=, >=, or ~=.

The scope of a while statement is always terminated with a matching end.

Arguments

expression

expression is a MATLAB expression, usually consisting of variables or smaller expressions joined by relational operators (e.g., count < limit), or logical functions (e.g., isreal(A)).

Simple expressions can be combined by logical operators (&,|,~) into compound expressions such as the following. MATLAB evaluates compound expressions from left to right, adhering to operator precedence rules.

• (count < limit) & ((height - offset) >= 0)

statements

statements is one or more MATLAB statements to be executed only while the expression is true or nonzero.

Remarks

Nonscalar Expressions

If the evaluated expression yields a nonscalar value, then every element of this value must be true or nonzero for the entire expression to be considered true. For example, the statement, while (A < B) is true only if each element of matrix A is less than its corresponding element in matrix B. See Example 2, below.

Partial Evaluation of the Expression Argument

Within the context of an if or while expression, MATLAB does not necessarily evaluate all parts of a logical expression. In some cases it is possible, and often advantageous, to determine whether an expression is true or false through only partial evaluation.

For example, if A equals zero in statement 1 below, then the expression evaluates to false, regardless of the value of B. In this case, there is no need to evaluate B and MATLAB does not do so. In statement 2, if A is nonzero, then the expression is true, regardless of B. Again, MATLAB does not evaluate the latter part of the expression.

• 1)   while (A & B)               2)   while (A | B)

You can use this property to your advantage to cause MATLAB to evaluate a part of an expression only if a preceding part evaluates to the desired state. Here are some examples.

• while (b ~= 0) & (a/b > 18.5)
if exist('myfun.m') & (myfun(x) >= y)
if iscell(A) & all(cellfun('isreal', A))

Examples

Example 1 - Simple while Statement

The variable eps is a tolerance used to determine such things as near singularity and rank. Its initial value is the machine epsilon, the distance from 1.0 to the next largest floating-point number on your machine. Its calculation demonstrates while loops.

• eps = 1;
while (1+eps) > 1
eps = eps/2;
end
eps = eps*2

Example 2 - Nonscalar Expression

Given matrices A and B

• A =                 B =
1     0            1     1
2     3            3     4
 Expression Evaluates As Because A < B false A(1,1) is not less than B(1,1). A < (B + 1) true Every element of A is less than that same element of B with 1 added. A & B false A(1,2) & B(1,2) is false. B < 5 true Every element of B is less than 5.