Next: Scalar functions Up: No Title Previous: Matrix building functions

For, while, if - and relations

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

 
x = []; for i = 1:n, x=[x,i^2 ], end
or
 
x = [];  
        for i = 1:n  
            x = [x,i^2 ]  
        end
will produce a certain n-vector and the statement
 
x = []; for i = n:-1:1, x=[x,i^2 ], end
will produce the same vector in reverse order. Try them. Note that a matrix may be empty (such as x = []). The statements
 
for i = 1:m  
             for j = 1:n  
                 H(i, j) = 1/(i+j-1);  
             end  
        end  
        H
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 last H displays the final result.

While. The general form of a while loop is


while   relation   
     statements    
end
The statements will be repeatedly executed as long as the relation remains true. For example, for a given number a, the following will compute and display the smallest nonnegative integer n such that :
 
n = 0;    
       while  2^n < a    
            n = n + 1;     
       end    
       n
If. The general form of a simple if statement is


if  relation     
  statements    
end
The statements will be executed only if the relation is true. Multiple branching is also possible, as is illustrated by
 
if n < 0     
              parity = 0;    
         elseif  rem(n,2) == 0    
              parity = 2;    
         else    
              parity = 1;    
         end
In two-way branching the elseif portion would, of course, be omitted.

Relations. The relational operators in MATLAB are


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

 
  &      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

 
if  A == B    
      statement    
end
but if you wish to execute statement when A and B are not equal, you would type
 
        if  any(any(A ~ B))     
              (   statement   )    
         end
or, more simply,
  
if  A == B  else     
                { statement}    
end
Note that the seemingly obvious

 if  A ~= B, (   statement  ), end
will not give what is intended since statement would execute only if each of the corresponding entries ofA and B differ. The functions any and all can be creatively used to reduce matrix relations to vectors or scalars. Two any's are required above since any is a vector operator (see section 8).

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.



Next: Scalar functions Up: No Title Previous: Matrix building functions


ladi@
Wed Mar 13 19:15:55 MET 1996