Page 121 - A Guide to MATLAB for Beginners and Experienced Users
P. 121

102       Chapter 7: MATLAB Programming


           Branching with if
                     For a simple illustration of branching with if, consider the following function
                     M-file absval.m, which computes the absolute value of a real number:
                       function y = absval(x)
                       ifx>=0
                            y=x;
                       else
                            y = -x;
                       end
                     The first line of this M-file states that the function has a single input x and
                     a single output y. If the input x is nonnegative, the if statement is deter-
                     mined by MATLAB to be true. Then the command between the if and the
                     else statements is executed to set y equal to x, while MATLAB skips the
                     command between the else and end statements. However, if x is negative,
                     then MATLAB skips to the else statement and executes the succeeding com-
                     mand, setting y equal to -x. As witha for loop, the indentation of commands
                     above is optional; it is helpful to the human reader and is done automatically
                     by MATLAB’s built-in Editor/Debugger.

                      Most of the examples in this chapter will give peculiar results if their input
                       is of a different type than intended. The M-file absval.m is designed only
                       for scalar real inputs x, not for complex numbers or vectors. If x is complex
                       for instance, then x>=0 checks only if the real part of x is nonnegative,
                       and the output y will be complex in either case. MATLAB has a built-in
                       function abs that works correctly for vectors of complex numbers.
                       In general, if must be followed on the same line by an expression that
                     MATLAB will test to be true or false; see the section below on Logical Expres-
                     sions for a discussion of allowable expressions and how they are evaluated.
                     After some intervening commands, there must be (as with for) a correspond-
                     ing end statement. In between, there may be one or more elseif state-
                     ments (see below) and/or an else statement (as above). If the test is true,
                     MATLAB executes all commands between the if statement and the first
                     elseif, else,or end statement and then skips all other commands un-
                     til after the end statement. If the test is false, MATLAB skips to the first
                     elseif, else,or end statement and proceeds from there, making a new test
                     in the case of an elseif statement. In the example below, we reformulate
                     absval.m so that no commands are necessary if the test is false, eliminating
                     the need for an else statement.
   116   117   118   119   120   121   122   123   124   125   126