Introduction to MATLAB®

Nancy K. Stanton

based on original versions © 2000-2005 by Paul Green and Jonathan Rosenberg, modified with permission

Contents

Working with the Command Window

Launch MATLAB. You should see the MATLAB Desktop which includes several windows, the most important of which is the MATLAB Command Window. (The function of the other windows is explained in Chapter 3 of A Guide to MATLAB® for Beginners and Experienced Users, second edition, by Hunt, Lipsman and Rosenberg.)

In the toolbar, change the Current Directory to the directory or folder where you want to save your work.

In the command window you should see a prompt that looks like >>. Position your mouse there and type

1+1

and hit Enter. MATLAB should type in response:

ans =
    2

In this way you can use MATLAB as a calculator. Type sin(pi) and hit Enter. MATLAB should type in response something like:

ans =
     1.2246e-016

MATLAB recognizes sin as the sine function and pi as the number $\pi$. Of course $\sin(\pi)=0$, but MATLAB gave the numerical answer $1.2246 \times 10^{\mbox{-16}}$ (in scientific notation). This is because MATLAB does arithmetic with double-precision numbers, which are only accurate to 15 places. The MATLAB default is to print five digits, but you can change this by typing format long and hitting Enter. Thereafter, MATLAB will print out 15 significant digits (unless you go back to the default by typing format short).

Exercise

Experiment with using the MATLAB Command Window as a calculator. The basic operations and functions are represented by * for "times", / for "divided by", ^ for powers (e.g., 3^3 means "3 cubed"), abs for absolute value, sqrt for square root, exp for the exponential function to the base e, so exp(1)=2.718281828..., log for the logarithm function to the base e (often denoted ln), sin, cos, and tan for the basic trig functions, cosh, sinh, tanh for the basic hyperbolic functions, and asin, acos, atan for the inverse trig functions.

Numerical vs. Symbolic Calculation

It is important to remember that MATLAB, by default, does numerical calculations with double-precision numbers. It can also do exact, i.e., symbolic, calculations and algebra, using an accessory called the Symbolic Toolbox, but only if you tell it to. For example, notice what happens if you type sin(sym('pi')) and hit Enter. Matlab responds with

ans =

0

A string of characters, enclosed in single quotes, is what MATLAB calls a string. The command sym takes a string as an argument and tells MATLAB to interpret this string as a symbolic expression. So sym('pi') refers not to the approximate number 3.14159265... (which MATLAB denotes simply by pi) but to the exact number $\pi$. So now when we take the sine, we get the exact answer 0. If you look carefully, you'll see that MATLAB indents its answer when the answer is numerical (double-precision) and prints it flush with the left margin when the answer is symbolic. That way you can always distinguish numerical from symbolic output.

The usual way to do symbolic calculations in MATLAB (to avoid having to keep writing such awkward expressions as sym('x') over and over) is to declare certain variables to be symbolic. Such a declaration lasts until you clear the assignment or assign a numerical value to that variable instead. Here's an example. Type syms pi and hit Enter. That's equivalent to saying, "From now on I want pi to represent the true $\pi$, not the approximation." The command syms declares whatever follows to be a symbolic variable or expression. Note the lack of indentation. If you now type sin(pi) and hit Enter as before, you get

ans =
0

If you now type clear pi and hit Enter, then hit the "uparrow" key twice (a shorthand for recalling the next-to-last command) to recover sin(pi) and hit Enter, you get

ans =
   1.2246e-16

again.

Simple MATLAB Plots

The easiest way to plot a graph in MATLAB is with the command ezplot. It can take as input either a string or a symbolic expression. Thus ezplot('t^3-t', [-2, 2]) and syms t followed by ezplot(t^3-t, [-2, 2]) are both acceptable ways to plot $t^3\mbox{--}t$ over the interval where $t$ runs from -2 to 2.

ezplot('t^3-t',[-2,2])

Once you have produced a plot, you can modify it. The command hold on sets a toggle switch so that output from the next plotting command is superimposed on the existing one. The command hold off turns this off again. Thus to find the solutions of the equation sin(x) = x/2, you can superimpose the plots of sin(x) and of x/2 as follows:

syms x; ezplot(sin(x),[-2,2]);
hold on; ezplot(x/2,[-2,2]); hold off

Note that you can separate commands on the same line with semicolons (or commas), though a semicolon will also suppress the printed output (not the graphical output) of a command. Another important command for modifying plots is the axis command, which enables you to modify the scales on the axes. For example, axis tight will cut the axes down to the minimum required to enclose the figure, and axis equal makes the scales on the horizontal and vertical axes the same. This is important to know about if you want your circles to look like circles and not like ellipses. Thus compare the following two ways to plot a semicircle:

ezplot(sqrt(1-x^2),[-1,1])
ezplot(sqrt(1-x^2),[-1,1]); axis equal; axis tight

Getting Help in MATLAB

To use MATLAB effectively it's important to know how to look up the syntax for hundreds of commands that you can't possibly memorize. There are many ways to get online help. If you remember the name of a command, but can't remember its syntax or all its options, all you have to do is type help followed by the name of the command. For example, try:

help axis
 AXIS  Control axis scaling and appearance.
    AXIS([XMIN XMAX YMIN YMAX]) sets scaling for the x- and y-axes
       on the current plot.
    AXIS([XMIN XMAX YMIN YMAX ZMIN ZMAX]) sets the scaling for the
       x-, y- and z-axes on the current 3-D plot.
    AXIS([XMIN XMAX YMIN YMAX ZMIN ZMAX CMIN CMAX]) sets the
       scaling for the x-, y-, z-axes and color scaling limits on
       the current axis (see CAXIS). 
    V = AXIS returns a row vector containing the scaling for the
       current plot.  If the current view is 2-D, V has four
       components; if it is 3-D, V has six components.
 
    AXIS AUTO  returns the axis scaling to its default, automatic
       mode where, for each dimension, 'nice' limits are chosen based
       on the extents of all line, surface, patch, and image children.
    AXIS MANUAL  freezes the scaling at the current limits, so that if
       HOLD is turned on, subsequent plots will use the same limits.
    AXIS TIGHT  sets the axis limits to the range of the data.
    AXIS FILL  sets the axis limits and PlotBoxAspectRatio so that
       the axis fills the position rectangle.  This option only has
       an effect if PlotBoxAspectRatioMode or DataAspectRatioMode are
       manual.
 
    AXIS IJ  puts MATLAB into its "matrix" axes mode.  The coordinate
       system origin is at the upper left corner.  The i axis is
       vertical and is numbered from top to bottom.  The j axis is
       horizontal and is numbered from left to right.
    AXIS XY  puts MATLAB into its default "Cartesian" axes mode.  The
       coordinate system origin is at the lower left corner.  The x
       axis is horizontal and is numbered from left to right.  The y
       axis is vertical and is numbered from bottom to top.
 
    AXIS EQUAL  sets the aspect ratio so that equal tick mark
       increments on the x-,y- and z-axis are equal in size. This
       makes SPHERE(25) look like a sphere, instead of an ellipsoid.
    AXIS IMAGE  is the same as AXIS EQUAL except that the plot
       box fits tightly around the data.
    AXIS SQUARE  makes the current axis box square in size.
    AXIS NORMAL  restores the current axis box to full size and
        removes any restrictions on the scaling of the units.
        This undoes the effects of AXIS SQUARE and AXIS EQUAL.
    AXIS VIS3D  freezes aspect ratio properties to enable rotation of
        3-D objects and overrides stretch-to-fill.
 
    AXIS OFF  turns off all axis labeling, tick marks and background.
    AXIS ON  turns axis labeling, tick marks and background back on.
 
    AXIS(H,...) changes the axes handles listed in vector H.
 
    See also AXES, GRID, SUBPLOT, XLIM, YLIM, ZLIM.

    Overloaded methods:
       vrjoystick/axis

    Reference page in Help browser
       doc axis

For the most complete MATLAB help, you will want to use the Help Browser. It may launch automatically when you launch MATLAB, or you can access it by using the Help item on the menu bar. To access help on a specific command in the Help Browser, type (in the Command Window) doc followed by the name of the command. For instance, compare the result of doc axis with that of help axis above. You can also search for the item with the search button in the Help Browser or locate it in the alphabetical index. A little experimentation with the Help Navigator will show you how to find commands to carry out any desired task. Also, typing (in the Command Window) lookfor followed by a keyword will get you a list of all the MATLAB commands with that keyword in their basic description.

The MATLAB Workspace

As you work in MATLAB, you will usually end up defining various variables and objects. These are saved in the MATLAB Workspace. There are two ways to inspect the contents of the Workspace: with the Workspace browser, usually found in the upper right-hand corner of the Desktop, or with the whos command. This lists all the currently defined variables and their "types" (double (i.e., double-precision numeric), string, symbolic, etc.). Most of the time you will see a variable called ans; MATLAB uses this for the last output that you did not explicitly store somewhere else, so the contents of ans will usually change many times during a session. Variables can be removed from the Workspace (for instance, to save memory space) with the clear command. Consider the following example.

a='pi'; b=sym('pi'); c=pi; whos
  Name      Size            Bytes  Class     Attributes

  a         1x2                 4  char                
  b         1x1               112  sym                 
  c         1x1                 8  double              
  x         1x1               112  sym                 

Here a is of type "char" (a string), b is of type "sym" (symbolic), and c is of type "double". Allowable variable names must be strings of letters, underscores, and numbers starting with a letter, but both upper-case and lower-case letters are allowed, and MATLAB distinguishes between them. Don't be fooled by the fact that the help lines for a command often refer to the command in all caps; MATLAB's built-in commands are almost all to be typed entirely in lower-case letters.

MATLAB editor

The MATLAB editor allows you to store a number of MATLAB commands in a script M-file. The file should be divided into units called cells, each beginning with a double percent sign. Here is a typical input cell.

syms x
factor(x^2-4)
 
ans =
 
(x - 2)*(x + 2)
 

Try creating an M-file and such a cell. Go to the File menu, click on New and then M-file. The MATLAB editor will open a new window. Insert a cell. (Type %% or click on the first %% icon on the last line of the tool bar or go to the Cell menu and click on Insert Cell Break) then Enter. You should now have a blank line. Type the MATLAB commands. Now evaluate the cell with Ctrl+Enter or clicking on the lower left icon on the last line of the tool bar. MATLAB will execute the commands in the cell and display the result in the Command Window. If you accidentally type

factor(y^2-y)

the variable y has not been declared symbolic and you get an error message (in red):

??? Undefined function or variable 'y'.

Publishing

The web page you are reading was produced using MATLAB's editor and publish feature. When you publish the file, MATLAB displays all the commands, output, and graphics in a web page - assuming there are no MATLAB errors. All of the output of a cell appears immediately after all of the input of the cell. This means you want to have lots of cells, so you can tell what output goes with what input.

WARNING If there is an error message, the web page will show that, and MATLAB will show the rest of your input but will NOT execute any of the remaining commands.

You can display formatted text that as far as MATLAB is concerned consists only of comments (not for evaluation). When your file is complete and you are sure there are no errors, you can publish it by going the File menu and clicking on Save File and Publish or clicking on the appropriate icon (the one after the printer icon on the second line of the toolbar). After publishing, you can either display the web page in your web browser or print it out (in order, say, to turn in a homework assignment). You may find the printed version looks better if you open the .html file in Firefox or Internet Explorer and print from there instead of printing from MATLAB's browser.

You are now ready to begin the first MATLAB assignment. Open a new M-file. In the File menu, click on Save As and enter the name of your M-file. Go to the Cell menu and click on Insert Text Markup then on Document Title and Introduction. Replace DOCUMENT TITLE by the title you want to give it (e.g., Introduction to MATLAB Practice Problems) and INTRODUCTORY TEXT by what you want there (e.g., your name). You are now ready to begin doing the first MATLAB assignment. When you have completed it, publish it and print the resulting html to turn in.

Problems for Practice

1. Plot $y = x^2$ and $y = 2^x$ on the same set of axes. Where do they intersect?

2. Turn on format long, set a=1, and then repeat the command a=(a+2/a)/2 about six times. What do you observe, and why? Compare with sqrt(2).

3. As in #2, turn on format long, set a=2, and then repeat the command a = 2*sin(a) about 20 times. What do you observe, and why? Compare with the result of the command fzero(@(x) 2*sin(x)-x,2). Look at the help text for fzero for an explanation of what it does.

4. Plot cosh(x) and sinh(x) on the same set of axes, with x running from -5 to 5. What do you observe? For an explanation, try syms x; y=simple(cosh(x)-sinh(x)).

5. Compare sin(pi/6) and cos(pi/6) with sin(sym('pi/6')) and cos(sym('pi/6')).