
8 - Chapman MATLAB Programming for Engineers
.pdfans =
7
>>3 - 3 ans =
0
>>4/5 ans =
0.8000
Prompt >> is supplied by Matlab, indicates beginning of the command.
ans = following the completion of the command with the Enter key marks the beginning of the answer.
Operations may be chained together. For example:
>>3 + 5 + 2 ans =
10
>>4*22 + 6*48 + 2*82 ans =
540
>>4 * 4 * 4
ans = 64
Instead of repeating the multiplication, the Matlab exponentiation or power operator can be used to write the last expression above as
>> 4^3 ans = 64
Left division may seem strange: divide the right operand by the left operand. For scalar operands the expressions 56/8 and 8\56 produce the same numerical result.
>>56/8 ans =
7
>>8\56 ans =
7
We will later learn that matrix left division has an entirely di erent meaning.
Syntax
17
Matlab cannot make sense out of just any command; commands must be written using the correct syntax (rules for forming commands). Compare the interaction above with
>> 4 + 6 +
??? 4 + 6 +
|
Missing operator, comma, or semi-colon.
Here, Matlab is indicating that we have made a syntax error, which is comparable to a misspelled word or a grammatical mistake in English. Instead of answering our question, Matlab tells us that we’ve made a mistake and tries its best to tell us what the error is.
Precedence of operations (order of evaluation)
Since several operations can be combined in one expression, there are rules about the order in which these operations are performed:
1.Parentheses, innermost first
2.Exponentiation (^), left to right
3.Multiplication (*) and division (/ or \) with equal precedence, left to right
4.Addition (+) and subtraction (−) with equal precedence, left to right
When operators in an expression have the same precedence the operations are carried out from left to right. Thus 3 / 4 * 5 is evaluated as ( 3 / 4 ) * 5 and not as 3 / ( 4 * 5 ) .
2.2.3Variables and Assignment Statements
Variable names can be assigned to represent numerical values in Matlab. The rules for these variable names are:
•Must start with a letter
•May consist only of the letters a-z, digits 0-9, and the underscore character (_)
•May be as long as you would like, but Matlab only recognizes the first 31 characters
•Is case sensitive: items, Items, itEms, and ITEMS are all di erent variable names.
Assignment statement: Matlab command of the form:
•variable = number
•variable = expression
18

When a command of this form is executed, the expression is evaluated, producing a number that is assigned to the variable. The variable name and its value are displayed.
If a variable name is not specified, Matlab will assign the result to the default variable, ans, as shown in previous examples.
Example 2.1 Expressions with variables
>>screws = 32 screws =
32
>>bolts = 18 bolts =
18
>>rivets = 40;
>>items = screws + bolts + rivets items =
90
>>cost = screws * 0.12 + bolts * 0.18 + rivets * 0.08 cost =
10.2800
•Variables: screws, bolts, rivets, items, cost
•Results displayed and stored by variable name
•Semicolon at the end of a line (as in the line >> rivets=40;) tells Matlab to evaluate the line but not to display the results
Matlab workspace: Variables created in the Command window are said to reside in the Matlab workspace or Base workspace. The workspace retains the values of these variables, allowing them to be used in subsequent expressions.
Thus, for the example above, we are able to compute the average cost per item by the following:
>> average_cost = cost/items average_cost =
0.1142
Because average cost is two words and Matlab variable names must be one word, an underscore was used to create the single Matlab variable average_cost.
If an expression contains variables, the value of the expression can be computed only if the values of the variables have been previously computed and still reside in the workspace. To compute the value of y = x + 5, you must first supply a value of x:
19

>>x=2
x =
2
>>y=x+5
y =
7
If you have not supplied a value for x, Matlab will return a syntax error:
>> y=x+5
??? Undefined function or variable ’x’.
Precedence of operations involving variables
Consider the computation of the area of a trapezoid whose parallel sides are of length b1 and b2 and whose height is h:
A = (b1 + b2)h
2
Matlab statement:
area = 0.5*(base_1 + base_2)*height;
Deleting the parentheses:
area = 0.5*base_1 + base_2*height;
This would compute
A = b21 + b2h
The incorrect result would be computed, but there would be no error messages, as the command has been written in correct Matlab syntax.
Style: writing arithmetic expressions
•Use parentheses often
Consider the equation to convert from temperature in Fahrenheit (TF ) to temperature in Celsius (TC ):
5
TC = 9(TF − 32)
This is computed correctly by the Matlab command:
TC = 5/9*(TF-32)
20

Matlab would first compute TF-32, replacing it with a value. Then 5/9 would be computed and this value would multiply the previously computed value of TF-32.
Easier to understand:
TC = (5/9)*(TF-32)
•Use multiple statements Consider the equation:
s2 + 4s + 13 H(s) = s3 − 2s2 + 4s + 5
Matlab commands:
numerator = s^2 + 4*s + 13; denominator = s^3 - 2*s^2 + 4*s + 5; H = numerator/denominator;
Special variables:
ans: default variable name
pi: ratio of circle circumference to its diameter, π = 3.1415926...
eps: smallest amount by which two numbers can di er inf or Inf : infinity, e.g. 1/0
nan or NaN : not-a-number, e.g. 0/0
date: current date in a character string format, such as 19-Mar-1998. flops: count of floating-point operations.
Commands involving variables:
who: lists the names of defined variables
whos: lists the names and sizes of defined variables
clear: clears all variables, resets default values of special variables clear var: clears variable var
clc: clears the command window, homes the cursor (moves the prompt to the top line), but does not a ect variables.
clf: clears the current figure and thus clears the graph window. more on: enables paging of the output in the command window. more off: disables paging of the output in the command window.
When more is enabled and output is being paged, advance to the next line of output by pressing Enter ; get the next page of output by pressing the spacebar. Press q to exit out of displaying the current item.
Example 2.2 Listing and clearing variables
>> who
Your variables are:
21

average_cost |
cost |
rivets |
|
bolts |
items |
screws |
|
>> whos |
|
|
|
Name |
Size |
Bytes |
Class |
average_cost |
1x1 |
8 |
double array |
bolts |
1x1 |
8 |
double array |
cost |
1x1 |
8 |
double array |
items |
1x1 |
8 |
double array |
rivets |
1x1 |
8 |
double array |
screws |
1x1 |
8 |
double array |
Grand total is 6 elements using 48 bytes
Each variable occupies 8 bytes of storage. These variables each have a size 1x1 because they are scalars, as opposed to vectors or matrices.
Redefining variables
A variable may be redefined simply by executing a new assignment statement involving the variable. Note that previously issued commands involving the redefined variable won’t be automatically reevaluated.
Example 2.3 Variable redefinition
>>screws = 32;
>>bolts = 18;
>>rivets = 40;
>>items = screws + bolts + rivets items =
90
>>screws = 36
screws = 36
>> items items =
90
After computing items, screws was changed to 36, overwriting its previous value of 32. Note that the value of items has not changed. Unlike a spreadsheet, Matlab does not recalculate the number of items based on the new value of screws. When Matlab performs a calculation, it does so using the values it knows at the time the requested command is evaluated. In this example, to recalculate items, the items assignment statement must be re-issued:
22

>> items = screws + bolts + rivets items =
94
Command reuse and editing
Commands can be reused and editted using the following operations:
•Press the up arrow cursor key (↑) to scrolls backward through previous commands. Press Enter to execute the selected command.
•The down arrow cursor key (↓) scrolls forward through commands
•The left (←) and right arrow (→) cursor keys move within a command at the Matlab prompt, allowing the command to be edited.
•The mouse can also be used to reposition the command cursor, by positioning the mouse cursor and pressing the left mouse button.
•Other standard editing keys, such as delete Del , backspace BkSp , home Home , and end End , perform their commonly assigned tasks.
•Once a scrolled or edited command is acceptable, pressing Enter with the cursor anywhere in the command tells Matlab to process it.
•Escape key Esc erases the current command at the prompt.
Windows copy and paste operations:
•Copy: Highlight a command to be copied by placing the mouse cursor at the beginning of the text to be highlighted, press the left mouse button, and drag the mouse cursor through the text, releasing the mouse button when you reach the end of the text to be copied. The selected, or highlighted, text will appear as white text on black background instead of the reverse. In Unix, the highlighted text is automatically copied (stored internally). In MS Windows, the highlighted text is copied by pulling down the Edit menu and selecting Copy (or typing Ctrl+C).
•Paste: To paste the copied text in Unix, move the mouse cursor to the desired location, press the middle mouse button, and the text will be pasted into the window. In MS Windows, reposition the cursor, pull down the Edit menu and select Paste (or type Ctrl+V).
Punctuation and Comments
• Semicolon (;) at the end of a command suppresses the display of the result
23
•Commas and semicolons can be used to place multiple commands on one line, with commas producing display of results, semicolons supressing
•Percent sign (%) begins a comment, with all text up to the next line ignored by Matlab
•Three periods (. . .) at the end of a command indicates that the command continues on the next line. A continuation cannot be given in the middle of a variable name.
Example 2.4 Use of punctuation
>>screws = 36 screws =
36
>>items
items = 90
>> items = screws + bolts + rivets items =
94
>> screws=32, bolts=18; rivets=40; % multiple commands screws =
32
>>items = screws + bolts + rivets;
>>cost = screws*0.12 + bolts*0.18 + rivets*0.08;
>> average_cost = cost/... |
% command continuation |
|
items |
|
|
average_cost = |
|
|
0.1142 |
|
|
|
|
|
|
|
|
2.3Basic Mathematical Functions
Matlab supports many mathematical functions, most of which are used in the same way you write them mathematically.
Elementary math functions (enter help elfun for a more complete list):
abs(x) |
Absolute value |x| |
||
sign(x) |
Sign, returns −1 if x < 0, 0 if x = 0, 1 if x > 0 |
||
exp(x) |
Exponential ex |
||
log(x) |
Natural logarithm ln x |
||
log10(x) |
Common (base 10) logarithm log10 x |
||
sqrt(x) |
Square root √ |
|
|
x |
|||
rem(x,y) |
Remainder of x/y. For example, rem(100,21) is 16. Also |
||
|
called the modulus function. |
24

Information about these functions is displayed by the command help function. For example:
>> help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex results are produced if X is not positive.
See also SQRTM.
Example 2.5 Use of math functions
√
x =
2
2
y = √1 e−x2/2
2π
z= 20 log10 y
>>x = sqrt(2)/2
x =
0.7071
>>y = exp(-(x^2)/2)/sqrt(2*pi)
y =
0.3107
>>z = 20*log10(y)
z=
-10.1533
Example 2.6 Solving for quadratic roots
Problem: Solve for s: 2s2 + 10s + 12 = 0
Analysis: Derive and apply the quadratic equation by first expressing the quadratic polynomial in parametric form
as2 + bs + c = 0
Assuming a = 0, rewrite the equation as
s2 + ab s + ac = 0
25

To solve, “complete the square” in s
s + b 2 − b 2 + c = 0 2a 2a a
Rewrite to leave only the term involving s on the left hand side
s + |
b |
2 |
= |
|
1 |
2 |
|
b2 |
− |
4ac |
|
|
|||||||||
|
2a |
|
|
2a |
|
|
Take the square root of each side to find the solutions
b 1
s1,2 = −2a ± 2a b2 − 4ac
There are two solutions, so it is necessary to rewrite the equation in a di erent form to develop the Matlab commands.
x |
= |
− |
|
b |
||
|
|
|
|
|||
2a |
||||||
|
|
√ |
|
|
||
y |
= |
b2 − 4ac |
||||
|
|
2a |
||||
|
|
|
|
|||
s1 |
= |
x + y |
||||
s2 |
= |
x − y |
Matlab session:
>>a=2;
>>b=10;
>>c=12;
>>x = -b/(2*a);
>>y = sqrt(b^2-4*a*c)/(2*a);
>>s1 = x+y
s1 = -2
>> s2 = x-y s2 =
-3
2.4Computational Limitations
To understand the computational limitations of Matlab and other computer software, it is necessary to consider the methods for representing numbers in digital computers.
26