In their basic forms, these MATLAB flow control statements operate like those in most computer languages.

**For.** For example, for a given n, the statement

orx = []; for i = 1:n, x=[x,i^2 ], end

will produce a certain n-vector and the statementx = []; for i = 1:n x = [x,i^2 ] end

will produce the same vector in reverse order. Try them. Note that a matrix may be empty (such asx = []; for i = n:-1:1, x=[x,i^2 ], end

will produce and print to the screen the m-by-n hilbert matrix. The semicolon on the inner statement suppresses printing of unwanted intermediate results while the lastfor i = 1:m for j = 1:n H(i, j) = 1/(i+j-1); end end H

**While.** The general form of a `while` loop is

The statements will be repeatedly executed as long as the relation remains true. For example, for a given numberwhile relation statements end

n = 0; while 2^n < a n = n + 1; end n

The statements will be executed only if the relation is true. Multiple branching is also possible, as is illustrated byif relation statements end

In two-way branching the elseif portion would, of course, be omitted.if n < 0 parity = 0; elseif rem(n,2) == 0 parity = 2; else parity = 1; end

**Relations.** The relational operators in MATLAB are

Note that ``='' is used in an assignment statement while ``=='' is used in a relation. Relations may be connected or quantified by the logical operators< less than > greater than <= less than or equal >= greater than or equal == equal ~= not equal.

& and | or ~ not.

When applied to scalars, a relation is actually the scalar 1 or 0 depending on
whether the relation is true or false. Try `3 < 5, 3 > 5, 3 == 5,` and
`3 == 3`.
When applied to matrices of the same size, a relation is a matrix of
0's and 1's
giving the value of the relation between corresponding entries.
Try `a = rand(5), b = triu(a), a == b`.

A relation between matrices is interpreted by `while` and `if` to be
true if each entry of the relation matrix is nonzero. Hence, if
you wish to execute *statement* when matrices `A` and `B`
are equal you could type

but if you wish to executeif A == B statement end

or, more simply,if any(any(A ~ B)) ( statement ) end

Note that the seemingly obviousif A == B else { statement} end

will not give what is intended sinceif A ~= B, ( statement ), end

The `for` statement permits any matrix to be used instead of `1:n`.
See the User's Guide for details of how this feature expands the power of
the `for` statement.

Wed Mar 13 19:15:55 MET 1996