An Brief Introductory Guide to MATLAB An Brief Introductory Guide to MATLAB
by Ian Cavers, UBC computer science
edits by Jack Snoeyink, UNC Chapel Hill computer science

1  Introduction

MATLAB provides a powerful interactive computing environment for numeric computation, visualization, and data analysis. Its wide range of commands, functions, and language constructs permit users to solve and analyze difficult computational problems from science and engineering without programming in a general purpose language.

This document provides a brief introduction to MATLAB, outlining basic features of use in COMP 205. MATLAB has extensive on-line help available through the following commands, which may be typed after the ``>>'' prompt:

local html documentation, including a start-up guide.
List the topics in the documentation that contain a given string.
gives a list of topics; help foo gives help on the topic or function foo.
Gives help information in a separate MATLAB window for click-on navigation.
Introductory slide show.
Other slide shows and programs that demonstrate MATLAB features.

The extent to which you use MATLAB beyond these requirements is up to you. For those who would like to explore the full potential of MATLAB, its ``programming language'' permits one to largely avoid languages such as C, Pascal or FORTRAN, for example. One warning, however. You may discover built-in numerical functions that you think implement a portion of one or more of your assignments. You should use these functions only for checking your answers. Please check with me before assignment due dates if you need this rule clarified for special MATLAB functions.

We have a limited number of MATLAB licenses available, so please respect the needs of other users and exit from MATLAB rather than leaving it idle for extended periods of time. To save the current state of a MATLAB session and initialize a subsequent MATLAB session with the same variables, use the commands save and load. Directory commands pwd and cd are used to display and change the current working directory.

While reading the remainder of this document you are strongly encouraged start MATLAB and experiment with the different features described. Be sure to explore some of the MATLAB Expo demos too!

2  MATLAB Basics

MATLAB is available on the unix machines (eagle, capefear, swift) and in To initiate a MATLAB session in Rick's Lab simply enter matlab at the shell prompt of an xterm. MATLAB will display some introductory information before printing the MATLAB prompt >>. At the prompt users are free to enter sequences of MATLAB expressions, commands and assignment statements. (See Section .) MATLAB places all ASCII output in the xterm window from which MATLAB was invoked, but automatically creates additional windows for graphical output.

To recall or edit previous command lines MATLAB provides command line editing using Emacs-style keystrokes. Using the and keys you can cycle through previous commands. The and keys move the cursor left and right along the current command line. In its default mode MATLAB inserts characters before the cursor. Cntrl-T toggles the command line editor between the insert and over-write modes. The delete key eliminates the character lying under the cursor. Once all necessary corrections (if any) have been made to the command line, it can be entered by hitting <rtn> with the cursor in any position. For more information consult the cedit help page by entering
          >> help cedit.

To terminate a MATLAB session enter the command
          >> exit
          >> quit. Please quit when not using MATLAB to free up licenses.

3  Variables, Expressions and Statements

MATLAB statements typically take one of two forms:
          variable = expression         or

All variable (and function) names consist of a letter followed by any number of numbers, letters and underscores. MATLAB is case sensitive and only the first 19 characters of any name are significant.

Expressions are composed from operators, function calls and variable names. A carriage return normally signifies the end of a statement, causing MATLAB to interpret the command and print its result. If the last character of a statement is a ; (semicolon), however, display of the result is suppressed. This feature may be especially useful when the result of a computation is a large matrix. Finally, several statements separated by commas may be placed on a single line.

When an expression is not explicitly assigned to a variable with the assignment operator ( = ), MATLAB automatically stores the result in the special variable ans.

During a MATLAB session you may forget the names of variables stored in your workspace. The command who lists the name of all your variables. If you want to know their size as well, use the command whos. By default MATLAB stores all variables until the session is terminated. To remove a variable from the workspace use the command clear var_name. WARNING: clear with no arguments removes all variables from the workspace.

At any time you can interrupt the computation of a MATLAB statement with Cntrl-C.

4  Matrices and MATLAB

Essentially, the only data objects in MATLAB are rectangular numerical matrices. There are no restrictions placed on the dimensions of a matrix (except by system resources), but special meaning is sometimes attached to 1×1 matrices (scalars) and matrices with only one row or column (vectors). The memory required for the storage of each matrix is automatically allocated by MATLAB.

The easiest way to enter a matrix into MATLAB is to provide an explicit list of elements enclosed in square brackets [ ]. MATLAB uses the following conventions:

For example, entering the assignment statement
>> A = [1 2 4.5; 8/2.0 6 5]
results in the output

A =
    1.0000    2.0000    4.5000
    4.0000    6.0000    5.0000
The 2×3 matrix is saved in variable A for future reference. If you want to see the contents of this or any other variable, simply enter its name as a command. To reference individual elements enclose their subscripts in parentheses after the variable name in the usual fashion.
>> A(2,3)
ans =

It is important to realize that MATLAB distinguishes between row and column vectors. [1 2 3] is a row vector, while [1; 2; 3] is a column vector. Column vectors can also be created by applying MATLAB's transpose operator ' (prime) to a row vector. For example
>> [1 2 3]'

ans =
The transpose operator may be applied to matrices of any dimension.

5  Numbers and Arithmetic Expressions

MATLAB uses conventional decimal notation to enter numbers. The leading minus sign and decimal point are optional, and numbers may be specified using scientific notation. The following examples are valid numbers in MATLAB.

4 -189 .032
-2.21e-23 0.972E18 0.000001

WARNING: If you try to import data produced by a FORTRAN routine that prints the values of double precision variables, MATLAB will not understand the use of ``D'' in place of ``E'' in scientific notation. (You can use the Unix command tr to replace all ``D''s with ``E''s.)

To build expressions, MATLAB provides the usual arithmetic operators.

+ addition - subtraction * multiplication
/ right division \left division ^power

(MATLAB's use of two division operators will be explained in Section .) To change the normal precedence of these operators enclose portions of an expression in parentheses in the usual manner.

MATLAB uses IEEE 754 double precision floating point arithmetic to perform its computations. Although MATLAB stores the full precision of all computations, by default it displays results in a 5 digit fixed point format. The output format can be changed using the format command. The following example prints the result of entering the vector [5/7.3 7.7432e-7] under different format settings.
format short
          0.6849 0.0000
format short e
          6.8493e-01 7.7432e-07
format long
          0.68493150684932 0.00000077432000
format long e
          6.849315068493150e-01 7.743200000000001e-07
You can learn more about the format command by entering help format. The remainder of the examples in this guide assume that the ``short e'' format has been chosen.

6  MATLAB Functions

In addition to the standard arithmetic operators, MATLAB provides an extensive collection of built-in functions. For example, most elementary mathematical functions (sin, cos, log, sqrt,) are available.

>> cos(pi/4)
ans =
pi is an example of a function that does not require parameters and simply returns a commonly used constant.
>> pi
ans =
Other functions are available in libraries of M-files grouped into toolboxes. Section  briefly describes how to create your own functions.

So far we have only seen functions that return a single matrix, but some functions return two or more matrices. To save these matrices, we surround the output variables by brackets [ ] and separate them by commas. For example,
>> [V,D] = eig(A)
returns the eigenvectors and eigenvalues of A in matrices V and D.

Several additional MATLAB functions are described in the remainder of this guide. For extensive lists of MATLAB functions consult the MATLAB helpdesk or explore the list of topics provided by entering the command help with no arguments. The MATLAB demos provide examples of the use of many interesting functions.

7  Matrix Operations

We have already seen the matrix operator ' (prime) for transposing matrices. The arithmetic operators presented in Section 5 also operate on matrices. In each case the operator behaves in a manner consistent with standard linear algebra practises.

The operators + and - permit the addition and subtraction of matrices, and are defined whenever the matrices have the same dimension. For example, the following is a valid expression.
>> [1 2 3; 4 5 6] + [3 2 1; 1 1 1];
The exception to this rule is the addition (subtraction) of a scalar to (from) a matrix. In this case the scalar is added to or subtracted from each element of the matrix individually.
>> [1 2 3] + 1

ans =
     2     3     4

The multiplication of two matrices, denoted by A*B, is defined whenever the inner dimensions of the operands A and B are equal. For example, if
C=[1 2 3; 4 5 6], D=[1 1 1; 2 2 2], x=[1 1 1]'
then C*x, x'*x (an inner product), x*x' (an outer product) and C*D' are defined, but C*D is not. (Give these examples a try and be sure you understand how MATLAB interprets them.) In the special case when one of the operands is a scalar, each element of the matrix is multiplied by the scalar.

It is now time to explain the reason for MATLAB's two division operators. If A is a square nonsingular matrix then A\B and B/A formally correspond to the left and right multiplication of B by A-1. (Note: MATLAB does not actually compute the inverse of A when evaluating these expressions.) These expressions are used to solve the following types of systems of equations.

left division:
x = A\B solves A*X = B
right division:
x = A/B solves X*A = B

Whenever B has as many rows as A, left division is defined. If A is a square nonsingular matrix and b is a vector with as many rows, MATLAB evaluates the expression x = A\b (the solution to Ax = b) by factoring A with Gaussian elimination and then solving two triangular systems to compute x. When A is not square, MATLAB factors A using Householder orthogonalization and the factors are used to solve the under-determined or over-determined system of equations in the least squares sense. This can lead to surprising results if the wrong slash is used or if the dimensions of your matrices are wrong.

Finally, the expression A^p raises A to the pth power. This operation is only defined if A is square and p is an scalar. For example, A^2 is equivalent to A*A, although MATLAB does not always compute powers with simple matrix multiplication.

8  Array Operations

The previous section described standard linear algebra matrix operations. Alternatively, element-by-element matrix arithmetic is provided by array operations. An array operator is formed by preceding one of the symbols +, -, *, \, or / by a period (.). Of course, the matrix and array operators for addition and subtraction are equivalent, and + and - are used in either case.

The operator .* denotes array multiplication and is defined whenever the two operands have the same dimensions. For example
>> A=[1 2 3; 4 5 6] ; B = [2 2 2; 3 3 5]; C=A.*B
results in

C =
     2     4     6
    12    15    30
Similarly, A.\B and A./B provide the left and right element-by-element division. Raising each element of a matrix to the same power is accomplished by the .^ operator.

Most standard MATLAB functions operate on a matrix element-by-element. For example
>> cos(C)

ans =
  -4.1615e-01  -6.5364e-01   9.6017e-01
   8.4385e-01  -7.5969e-01   1.5425e-01
If you create your own functions (See Section .) you should keep in mind that MATLAB assumes that a matrix (or a vector) can be passed to it.

9  Vector and Matrix Manipulation

Vectors are easily generated with MATLAB's colon ``:'' notation. For example, the expression 1:5 creates the following row vector.
1 2 3 4 5
You can also create a vector using an increment other than one. For example, 1:2:7 results in the vector
1 3 5 7
The increment may be negative and need not be an integer.

It is very easy to create a table using the colon notation. Experiment with the commands
>> x=(0:pi/4:pi)'; y=cos(x); AA=[x y]
for a demonstration of this technique.

MATLAB permits users to easily manipulate the rows, columns, submatrices and individual elements of a matrix. The subscripts of matrices can be vectors themselves. If x and v are vectors then x(v) is equivalent to the vector [x(v(1)), x(v(2)), ] . Subscripting a matrix with vectors extracts a submatrix from it. For example, suppose A is an 8×8 matrix. A(1:4, 5:8) is the 4×3 submatrix extracted from the first 4 rows and last 3 columns of the matrix. When the colon operator is used by itself, it denotes all of the rows or columns of a matrix. Using the result of the table above
>> AA(:,1)
produces the first column of matrix AA.

ans =

10  M-Files: Creating Your Own Scripts and Functions

Users are able to tailor MATLAB by creating their own functions and scripts of MATLAB commands and functions. Both scripts and functions are ordinary ASCII text files external to MATLAB. The name of each file must end in ``.m'' and must be found on MATLAB's search path. (It is easiest to start MATLAB from the directory containing your M-files. See also the command path.) By default while an M-file is executing its statements are not displayed. This default behavior can be changed using the echo command.

A script may contain any sequence of MATLAB statements, including references to other M-files. It is invoked like any other command without arguments and acts on the variables of the workspace globally. Each command in the file is executed as though you had typed it into MATLAB. Most of the demos provided by MATLAB are simply scripts.

The first line of a function M-file starts with the word function and declares the name of the function and its input and output parameters. All input parameters and variables defined within the file are local to the function. Figure  provides a simple example from the MATLAB User's Guide.

function y = mymean(x)
% mymean: Average or mean value.
% For vectors, mymean(x) returns the mean value.
% For matrices, mymean(x) is a row vector containing the mean value of each column.
[m,n] = size(x);
if m == 1
          m = n;
y = sum(x)/m;

Figure 1: A User Defined Function.

If we type this function into a file called mymean.m, then we can call mymean like any other MATLAB function.
>> mymean(1:99)

ans = 
The parameter supplied to mymean is passed by value (not reference) to the local variable x. The variables m,n,y are also local to mymean and do not exist after it returns. An M-file function does not alter the value of variables in the workspace unless explicit global declarations are made.

11  Graphics and Related Issues

MATLAB provides users with a powerful array of functions for creating sophisticated graphics. We just give one example of plotting in 2-D: plot permits the plotting of vectors and matrices, while fplot simplifies the plotting of functions.

Let's start by plotting sin between 0 and pi using plot. First we must create two vectors containing the x and the y coordinates to the points we will use to create our plot.
>> x=0:pi/100:2*pi;
>> y=sin(x);
To create our plot of sin we enter the following statement.
>> plot(x,y,'-')
The minus sign in single quotes tells MATLAB we want a solid line. Other line types (and colors) can be specified in this fashion. Enter help plot for more information.

MATLAB permits the addition of another plot to the same graph by entering the command
>> hold on
Let's also plot the value of sin at 0,pi/4,pi/2,,2*pi on our graph, but this time instead of a solid line we will just mark each point with a plus sign.
>> plot(0:pi/4:2*pi,sin(0:pi/4:2*pi),'+')
Perhaps we also want to add a title and axis labels to the graph.
>> title('Our sine plot from 0 to pi')
>> xlabel('x')
>> ylabel('sin(x)')

Text can also be added to a plot at user specified coordinates with the commands text and gtext. Your final graph should look something like Figure . When you are finished with the graph enter the command
>> hold off
so that subsequent graphics do not include the current plot.

Figure 2: A Plotting Example.

The MATLAB command fplot is similar to plot but accepts the name of a function in single quotes and an abscissa range. It adaptively samples the function at enough points to give a representative graph and then plots the results. As an example let's plot sin again.
>> fplot('sin', [0,2*pi])

To create a hardcopy of the current figure we use the MATLAB command print. For example, to create an PostScript version of our figure enter the following command.
>> print -dps
The resulting file can be printed on any PostScript printer using the Unix command lpr or previewed using ghostview. To create encapsulated PostScript suitable for inclusion into documents substitute -deps for -dps and file_name.eps for Directory commands pwd and cd are used to display and change the current working directory.

We may create data outside MATLAB and want to import it for plotting. This is accomplished by placing the data pairs (or triples) into an ASCII file with each pair (or triple) of data points on a separate line separated by blanks. (In other words, each vector of data to be imported is placed in a separate column of the file.) Be sure that numbers in scientific notation are compatible with MATLAB's format. (See Section 5.)

To import the data enter the following command.
>> load file_name
Variable file_name is now a matrix containing your data. To check if it was properly imported, simply enter file_name. To extract the vectors of data from the columns of the matrix use the colon notation as previously discussed.

12  Additional Features

This brief guide has not touched upon many interesting MATLAB features.

For example, MATLAB provides many additional functions and a programming language, including looping constructs, conditional statements, relational operators and logical operators. If you learn some of these you can do all the programming for COMP 205 in MATLAB. Note: if you intend to create complex MATLAB functions check out the description of MATLAB's debugger.

Although we will not get into them, MATLAB has various toolboxes for image processing, simulation, etc. MATLAB also has an API that allows it to call functions written in C/C++ or FORTRAN, and has an engine that allows functions written in C/C++ to call MATLAB to carry out computations.

File translated from TEX by TTH, version 2.60.
On 12 Jan 2000, 09:59.