MATLAB Primer
Kermit Sigmon
Department of Mathematics
University of Florida
Gainesville, FL 32611
sigmon@math.ufl.edu
sigmon@ufpine.bitnet
Copyright 1989 by Kermit Sigmon
Introduction
MATLAB is an interactive, matrix-based system for scientific and engineering
calculations. You can solve complex numerical problems without actually
writing a program. MATLAB is an outgrowth of the LINPACK and EISPACK
projects, and has been evolving for a number of years to the current system.
The name MATLAB is an abbreviation for MATrix LABoratory.
The purpose of these notes is to help you begin to use MATLAB. They can best
be used hands-on. You are encouraged to work at the computer as you read
the notes and freely experiment with examples.
You should liberally use the on-line help facility for more detailed
information. After entering MATLAB as described in section 1, the command
"help" will display a list of functions for which on-line help is
available; the command "help functionname" will give information
about a specific function. The command "help eig", for example, will
give information about the eigenvalue function "eig". You can preview
some of the features of MATLAB by entering the command "demo".
The scope and power of MATLAB go far beyond these notes. Eventually you will
want to consult the MATLAB User's Guide. Copies of the complete User's Guide
are often available for review at locations such as consulting desks,
terminal rooms, computing labs, and the reserve desk of the library.
Consult your instructor or your local computing center to learn where the
User's Guides are located at your institution.
MATLAB is available for a number of environments: Sun/Apollo/VAXstation/HP
workstations, VAX, MicroVAX, Gould, PC and AT compatibles, 80386 computers,
Apple Macintosh, and several parallel machines. The information in these
notes applies generally to all of these environments, except as
noted.
MATLAB is licensed by The MathWorks, Inc., 21 Eliot St.,
South Natick, MA 01760, (508)653-1415.
Contents
1. Accessing MATLAB
2. Entering matrices
3. Matrix operations
4. Statements, expressions, variables
5. Matrix building functions
6. For, while, if
7. Scalar functions
8. Vector functions
9. Matrix functions
10. Submatrices and colon notation
11. M-files
12. Text strings, error messages, input
13. Managing M-files
14. Comparing efficiency of algorithms: flops and etime
15. Output format
16. Hard copy
17. Graphics
18. Reference
1. Accessing MATLAB
On most systems, after logging in one can enter MATLAB with the system command
"matlab" and exit MATLAB with the command "exit" or "quit". On a PC, for
example, if properly installed, one may enter MATLAB with the command:
"C> matlab"
and exit it with the command:
">> quit"
On systems permitting multiple processes, such as a Unix system, you will find
it convenient, for reasons discussed in section 13, to keep both MATLAB and
your local editor active. If you are working on a workstation which runs
processes in multiple windows, you will want to keep MATLAB active in one
window and your local editor active in another. You should consult your
instructor or your local computer center for details of the local installation.
2. Entering matrices
MATLAB works with essentially only one kind of object - a rectangular numerical
matrix with possibly complex entries; all variables represent matrices. In
some situations, 1-by-1 matrices are interpreted as scalars and matrices with
only one row or one column are interpreted as vectors.
Matrices can be introduced into MATLAB in several different ways:
Entered by an explicit list of elements,
Generated by built-in statements and functions,
Created in M-files (see section 13 below),
Loaded from external data files (see User's Guide).
For example, either of the statements
A = [1 2 3; 4 5 6; 7 8 9]
and
A = [
1 2 3
4 5 6
7 8 9 ]
creates the obvious 3-by-3 matrix and assigns it to a variable A. Try it.
The elements within a row of a matrix may be separated by commas as well as
a blank.
When listing a number in exponential form (e.g. 2.34e-9), blank spaces must be
avoided. Listing entries of a large matrix is best done in an M-file, where
errors can be easily edited away (see section 8).
The built-in functions "rand", "magic", and "hilb", for example, provide an
easy way to create matrices with which to experiment. The command "rand(n)",
or "rand(m,n)" will create an N by N or M by N matrix with randomly generated
entries; "magic(n)" will create an integral N by N matrix which is a magic
square (rows and columns have common sum); "hilb(n)" will create the N by N
Hilbert matrix, the king of ill-conditioned matrices (M and N denote, of
course, positive integers). Matrices can also be generated with a for-loop
(see section 6 below). Try it.
Individual matrix and vector entries can be referenced with indices inside
parentheses in the usual manner. For example, A(2,3) denotes the entry in
the second row, third column of matrix A and x(3) denotes the third
coordinate of vector x. Try it.
3. Matrix operations
The following matrix operations are available in MATLAB:
+ addition
- subtraction
* multiplication
^ power
' transpose
\ left division
/ right division
These matrix operations apply, of course, to scalars (1-by-1 matrices) as well.
If the sizes of the matrices are incompatible for the matrix operation, an
error message will result, except in the case of scalar-matrix operations
in which case each entry of the matrix is operated on by the scalar.
The "matrix division" operations deserve special comment. If A is an
invertible square matrix and b is a compatible column, resp. row, vector,
then
x=A \ b is the solution of A*x=b and,
x=b / A is the solution of x*A=b
In left division, if A is square, then it is factored using Gaussian
elimination and these factors used to solve A*x=b. If A is not square, it is
factored using Householder orthogonalization with column pivoting and the
factors used to solve the under- or over- determined system in the least
squares sense. Right division is defined in terms of left division by
b / A= (A' \ b')'
It is important to observe that the operations *, ^, \, and / will operate
entry-wise if they are preceded by a period. For example, either
"[1,2,3,4].*[1,2,3,4] or "[1,2,3,4].^2 will yield "[1,4,9,16]". Try it.
4. Statements, expressions, and variables
MATLAB is an expression language; the expressions you type are interpreted and
evaluated. MATLAB statements are usually of the form
variable = expression, or simply
expression
Expressions are usually composed from operators, functions, and variable names.
Evaluation of the expression produces a matrix, which is then displayed on the
screen and assigned to the variable for future use. If the variable name and
= sign are omitted, a variable "ans" (for answer) is automatically created to
which the result is assigned.
A statement is normally terminated with the carriage return. However, a
statement can be continued to the next line with three or more periods followed
by a carriage return. On the other hand, several statements can be placed on
a single line if separated by commas or semicolons.
If the last character of a statement is a semicolon, the printing is
suppressed, but the assignment is carried out. This is essential
in suppressing unwanted printing of intermediate results.
MATLAB is case-sensitive in the names of commands, functions, and variables.
For example, "SOLVE" is not the same as "solve".
The command "who" will list the variables currently in the workspace. A
variable can be cleared from the workspace with the command
"clear variablename". The command "clear" alone will clear all nonpermanent
variables.
When one logs out or exits MATLAB all variables are lost. However, invoking
the command "save" before exiting causes all variables to be written to a
diskfile named "matlab.mat". When one later reenters MATLAB, the command
"load" will restore the workspace to its former state.
A runaway display or computation can be stopped on most machines without
leaving MATLAB with CTRL-C (CTRL-BREAK on a PC).
The permanent variable "eps" (epsilon) gives the machine precision---about
10^(-16) on most machines. It is useful in determining tolerences for
convergence of iterative processes.
5. Matrix building functions
Convenient matrix building functions are
eye identity matrix
zeros matrix of zeros
ones matrix of ones
diag see below
triu upper triangular part of a matrix
tril lower triangular part of a matrix
rand randomly generated matrix
hilb Hilbert matrix
magic magic square
toeplitz see "help toeplitz"
For example, "zeros(m,n)" produces an M-by-N matrix of zeros and "zeros(n)"
produces an N by N one; if A is a matrix, then "zeros(A)" produces a matrix of
zeros of the same size as A.
If x is a vector, "diag(x)" is the diagonal matrix with x down the diagonal;
if A is a square matrix, then "diag(A)" is a vector consisting of the diagonal
of A. What is "diag(diag(A))"? Try it.
Matrices can be built from blocks. For example, if A is a 3-by-3 matrix,
then
B = [A, zeros(3,2); zeros(2,3), eye(2)]"
will build a certain 5-by-5 matrix. Try it.
6. For, while, if
In their basic forms, these MATLAB flow control statements operate like those
in most computer languages. For example, the statement
for i = 1:n, x(i)=i^2, end
or equivalently,
for i = 1:n
x(i) = i^2
end
will produce a certain N-vector and the statement
for i = n:-1:1, x(i)=i^2, end
will produce the same vector in reverse order. 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.
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 2^N => A:
n = 0;
while 2^n < a
n = n + 1;
end
n
The general form of an "if" statement is illustrated by
if n < 0
x(n) = 0;
elseif rem(n,2) == 0
x(n) = 2;
else
x(n) = 1;
end
In two-way branching the elseif portion would, of course, be omitted.
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 of A 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.
7. Scalar functions
Certain MATLAB functions operate essentially on scalars, but operate
element-wise when applied to a matrix. The most common such functions are
sin asin exp abs round
cos acos log (natural log) sqrt floor
tan atan rem (remainder) sign ceil
8. Vector functions
Other MATLAB functions operate essentially on a vector (row or column), but act
on an M-by-N matrix (for M at least 2) in a column-by-column fashion to produce
a row vector containing the results of each column. A few of these functions
are
max sum median any
min prod mean all
sort std
For example, the maximum entry in a matrix A is given by "max(max(A))" rather
than "max(A)". Try it.
9. Matrix functions
Much of MATLAB's power comes from its matrix functions. The most useful ones
are
eig eigenvalues and eigenvectors
chol cholesky factorization
svd singular value decomposition
inv inverse
lu LU factorization
qr QR factorization
hess hessenberg form
schur schur decomposition
rref reduced row echelon form
expm matrix exponential
sqrtm matrix square root
poly characteristic polynomial
det determinant
size size
norm 1-norm, 2-norm, F-norm, infinity-norm
cond condition number in the 2-norm
rank rank
MATLAB functions may have single or multiple output arguments. For example,
"y = eig(A)", or simply "eig(A)" produces a column vector containing the
eigenvalues of A while "[U,D] = eig(A)" produces a matrix U whose columns
are the eigenvectors of A and a diagonal matrix D with the eigenvalues of A on
its diagonal. Try it.
10. Submatrices and colon notation
Vectors and submatrices are often used in MATLAB to achieve fairly complex
data manipulation effects. "Colon notation" (which is used both to generate
vectors and reference submatrices) and subscripting by vectors are keys to
efficient manipulation of these objects. Creative use of these features
permits one to minimize the use of loops (which slows MATLAB) and to make code
simple and readable. Special effort should be made to become familiar with
them.
The expression "1:5" (met earlier in "for" statements) is actually the row
vector [1 2 3 4 5]. The numbers need not be integers nor the increment one.
For example, "0.2:0.2:1.2" gives [0.2 0.4 0.6 0.8 1.0 1.2], and
"5:-1:1" gives [5 4 3 2 1].
The following statements will, for example, generate a table of sines. Try it.
x = [0.0:0.1:2.0]';
y = sin(x);
[x y]
Note that since "sin" operates entry-wise, it produces a vector y from the
vector x.
The colon notation can be used to access submatrices of a matrix. For
example, "A(1:4,3)" is the column vector consisting of the first four entries
of the third column of A. A colon by itself denotes an entire row or column:
"A(:,3)" is the third column of A, and "A(1:4,:)" is the first four rows.
Arbitrary integral vectors can be used as subscripts: "A(:,[2 4])" contains as
columns, columns 2 and 4 of A. Such subscripting can be used on both sides of
an assignment statement: "A(:,[2 4 5]) = B(:,1:3)" replaces columns 2,4,5 of
A with the first three columns of B. Note that the entire altered matrix A is
printed and assigned. Try it.
Columns 2 and 4 of A can be multiplied on the right by the 2-by-2 matrix
[1 2;3 4]:
A(:,[2,4]) = A(:,[2,4])*[1 2;3 4]
Once again, the entire altered matrix is printed and assigned.
If x is an N-vector, what is the effect of the statement "x = x(n:-1:1)"?
Try it.
To appreciate the usefulness of these features, compare these MATLAB statements
with a Pascal, FORTRAN, or C routine to effect the same.
11. M-files
MATLAB can execute a sequence of statements stored on diskfiles. Such files
are called "M-files" because they must have the file type of ".m" as the last
part of their filename. Much of your work with MATLAB will be in creating and
refining M-files.
There are two types of M-files: script files and function files. A script file
consists of a sequence of normal MATLAB statements. If the file has the
filename, say, "rotate.m", then the MATLAB command "rotate" will cause the
statements in the file to be executed. Variables in a script file are global
and will change the value of the environment.
Script files are often used to enter data into a large matrix; in such a
file, entry errors can be easily edited out. If, for example, one enters in a
diskfile "data.m"
A = [
1 2 3 4
5 6 7 8
];
then the MATLAB statement "data" will cause the assignment given in "data.m"
to be carried out.
An M-file can reference other M-files, including referencing itself
recursively.
Function files provide extensibility to MATLAB. You can create new
functions specific to your problem which will then have the same status as
other MATLAB functions. Variables in a function file are local.
We first illustrate with a simple example of a function file:
function P = prodsqr(A,B)
%
% PRODSQR Product of the square of two matrices.
%
P = A^2*B^2;
Memory will be used more efficiently if A is overwritten with the result:
function A = prodsqr(A,B)
%
% PRODSQR Product of the square of two matrices.
%
A = A^2*B^2;
This should be placed in a diskfile with filename "prodsqr.m" (corresponding
to the function name). The first line declares the function name, input
arguments, and output arguments; without this line the file would be a script
file. Then a MATLAB statement "z = prodsqr(x,y)", for example, will cause
the variables x and y to be passed to the variables A and B in the function
file with the output result being passed out to the variable z. Since
variables in a function file are local, their names are independent of those
in the environment.
A function may also have multiple output arguments. For example:
function [mean, stdev] = stat(x)
%
% STAT Mean and standard deviation
% For a vector x, stat(x) returns the
% mean and standard deviation of x.
% For a matrix x, stat(x) returns two row vectors containing,
% respectively, the mean and standard deviation of each column.
%
[m n] = size(x);
if m == 1
m = n; % handle case of a row vector
end
mean = sum(x)/m;
stdev = sqrt(sum(x.^2)/m - mean.^2)
Once this is placed in a diskfile "stat.m", a MATLAB command
"[xm, xd] = stat(x)", for example, will assign the mean and standard deviation
of the entries in the vector x to xm and xd, respectively. Single assignments
can also be made with a function having multiple output arguments. For
example, "xm = stat(x)" will assign the mean of x to xm.
This function illustrates some of the MATLAB features that can be used to
produce efficient code. Note, for example, that "x.^2" is the matrix of
squares of the entries of x, that "sum" is a vector function (section 6), that
"sqrt" is a scalar function (section 5), and that the division in "sum(x)/m"
is a matrix-scalar operation.
The "%" symbol indicates that the rest of the line is a comment; MATLAB will
ignore the rest of the line. However, the first few comment lines, which
document the M-file, are available to the on-line help facility and will be
displayed if, for example, "help stat" is entered.
12. Text strings, error messages, input
Text strings are entered into MATLAB surrounded by single quotes. For
example,
s = 'This is a test'
assigns the given text string to the variable "s".
Text strings can be displayed with the function "disp". For example:
disp('this message is hereby displayed')
Error messages are best displayed with the function "error"
error('Sorry, the matrix must be symmetric')
since it causes execution to exit the M-file.
In an M-file the user can be prompted to interactively enter input data with
the function "input". When, for example, the statement
"iter = input('Enter the number of iterations: ')
is encountered, the prompt message is displayed and execution pauses while the
user keys in the input data. Upon pressing the return key, the data is
assigned to the variable "iter" and execution resumes.
13. Managing M-files
While using MATLAB one frequently wishes to create or edit an M-file and then
return to MATLAB. One wishes to keep MATLAB active while editing a file
since otherwise all variables would be lost upon exiting.
This can be easily done using the !-feature. If, while in MATLAB, you precede
it with an !, any system command - such as those for editing, printing, or
copying a file - can be executed without exiting MATLAB. If, for example,
the system command "ed" accesses your editor, the MATLAB command
>> !ed rotate.m
will let you edit the file named "rotate.m" using your local editor. Upon
leaving the editor, you will be returned to MATLAB just where you left it.
As noted in section 1, on systems permitting multiple processes, such as one
running Unix, it may be preferable to keep both MATLAB and your local editor
active, keeping one process suspended while working in the other. If these
processes can be run in multiple windows, as on a Sun workstation, you will
want to keep MATLAB active in one window and your editor active in another.
You may consult your instructor or your local computing center for details of
the local installation.
When in MATLAB, the command "dir" will list the contents of the current
directory while the command "what" will list only the M-files in the directory.
The MATLAB commands "delete" and "type" can be used to delete a diskfile and
print a file to the screen, respectively, and "chdir" can be used to change the
working directory. While these commands may reflect system commands, they
avoid the use of an !.
14. Comparing efficiency of algorithms: flops and etime
Two measures of the efficiency of an algorithm are the number of floating
point operations (flops) performed and the elapsed time.
The MATLAB function "flops" keeps a running total of the flops performed. The
command "flops(0)" will reset flops to 0. Hence, entering "flops(0)"
immediately before executing an algorithm and "flops" immediately after gives
the flop count for the algorithm.
The MATLAB function "clock" gives the current time accurate to a hundreth
of a second (see "help clock"). Given two such times "t1" and "t2",
"etime(t2,t1)" gives the elapsed time from "t1" to "t2". One can, for example,
measure the time required to solve a given linear system Ax=b using Gaussian
elimination as follows:
time = clock;
x = A\b;
time = etime(clock,time)
You may wish to compare this time - and flop count - with that for solving
the system using "x = inv(A)*b;". Try it.
It should be noted that, on timesharing machines such as the VAX, "etime" is
not a reliable measure of the efficiency of an algorithm since the rate of
execution depends on how busy the computer is at the time.
15. Output format
While all computations in MATLAB are performed in double precision, the format
of the displayed output can be controlled by the following commands.
format short fixed point with 4 decimal places (the default)
format long fixed point with 14 decimal places
format short e scientific notation with 4 decimal places
format long e scientific notation with 15 decimal places
Once invoked, the chosen format remains in effect until changed.
The command "format compact" will suppress most blank lines allowing more
information to be placed on the screen or page. It is independent of the other
format commands.
16. Hardcopy
Hardcopy is most easily obtained with the "diary" command. The command
"diary filename"
causes what appears subsequently on the screen (except graphics) to be written
to the named diskfile (if the filename is omitted it will be written to a
default file named "diary") until one gives the command "diary off"; the
command "diary on" will cause writing to the file to resume, etc. When
finished, you can edit the file as desired and print it out on the local
system. The !-feature (see section 13) will permit you to print the file
without leaving MATLAB.
17. Graphics
MATLAB has excellent capability to produce planar plots and 3-D mesh surface
plots. To see some of these capabilities, enter the command "plotdemo".
Not all terminals for a mainframe computer support graphics. If you
experience difficulty, check with your local system manager. If, however, you
have terminal emulation software for your PC which supports Tektronix 4010
graphics, you may be able to explore this on the mainframe via dial-up.
Graphics are, however, supported on workstations such as the Sun and on a PC
with the appropriate graphics hardware and software.
The "plot" command creates linear x-y plots; if x and y are vectors of
the same length, the command "plot(x,y)" opens a graph window and draws
an x-y plot of the elements of x versus the elements of y. You can, for
example, draw the graph of the sine function over the interval -4 to 4 with
the following commands:
x = -4:.01:4;
y = sin(x);
plot(x,y)
Try it. The vector x is a partition of the domain with meshsize 0.01 while
y is a vector giving the values of sine at the nodes of this partition
(recall that "sin" operates entrywise -- see section 7).
When in the graph screen, pressing any key will return you to the command
screen while the command "shg" (show graph) will then return you to the
current graph screen. When creating graphics on, for example, a Sun, you may
wish to keep the graph window exposed - but moved to the side - and the
command window active.
As a second example, you can draw the graph of "y=e^(-x^2)" over the interval
-1.5 to 1.5 as follows:
x = -1.5:.01:1.5;
y = exp(-x.^2);
plot(x,y)
Note that one must precede ^ by a period to ensure that it operates entrywise
(see section 3).
You are referred to the User's Guide or the help facility for such features as
multiple plots, titles, labels, gridlines, and manual scaling.
A hardcopy of the graph window can be obtained with the MATLAB command "print".
Three dimensional mesh surface plots are drawn with the function "mesh".
The command "mesh(z)" creates a three-dimensional perspective plot of the
elements of the matrix z. The mesh surface is defined by the z-coordinates
of points above a rectangular grid in the x-y plane. Try "mesh(eye(10))".
To draw the graph of a function z=f(x,y) over a rectangle, one first
defines vectors xx and yy which give partitions of the sides of the
rectangle. With the function "meshdom" (mesh domain) one then creates
a matrix x, each row of which equals xx and whose column length is the
length of yy, and similarly a matrix y, each column of which equals yy,
as follows:
[x,y] = meshdom(xx,yy);
One then computes a matrix z, obtained by evaluating f entrywise over the
matrices x and y, to which "mesh" can be applied.
You can, for example, draw the graph of "z=e^(-x^2-y^2)" over the square
[-2,2] by [-2,2] as follows (try it):
xx = -2:.1:2;
yy = xx;
[x,y] = meshdom(xx,yy);
z = exp(-x.^2 - y.^2);
mesh(z)
One could, of course, replace the first three lines of the preceding with
[x,y] = meshdom(-2:.1:2, -2:.1:2);
You are referred to the User's Guide for further details regarding "mesh".
18. Reference
There are many MATLAB features which cannot be included in these introductory
notes. Listed below are some of the MATLAB functions and operators available,
grouped by subject area. This information was taken from the MATLAB User's
Guide, version 3.5.
Use the on-line help facility or consult the User's Guide for more detailed
information on the functions.
There are many functions beyond these. There exist, in particular, several
"toolboxes" of functions for specific areas; included among such are signal
processing, control theory, dynamical systems (system identification),
and chemometrics. The toolboxes, which are optional, might not be installed
on your system..
%%%%%%%%%%%% General %%%%%%%%%%%%%%%
help help facility
demo run demonstrations
who list variables in memory
what list M-files on disk
size row and column dimensions
length vector length
clear clear workspace
computer type of computer
^C local abort
exit exit MATLAB
quit same as exit
%%%%%%%%%%%%%%% Matrix/Array Operators %%%%%%%%%%%%%%
Matrix operator Array operator
+ addition + addition
- subtraction - subtraction
* multiplication .* multiplication
/ right division ./ right division
\ left division .\ left division
^ power .^ power
' conjugate transpose .' transpose
%%%%%%%%%%%% Relational and Logical Operators %%%%%%%%
< less than
<= less than or equal
> greater than
>= greater than or equal
== equal
~= not equal
& and
| or
~ not
%%%%%%%%%%%%%%%% Special Characters %%%%%%%%%%%%%%%%%
= assignment statement
[ used to form vectors and matrices
] see [
( arithmetic expression precedence
) see (
. decimal point
... continue statement to next line
, separate subscripts and function arguments
; end rows, suppress printing
% comments
: subscripting, vector generation
! execute operating system command
%%%%%%%%%%%% Special Values %%%%%%%%%%%%%%
ans answer when expression not assigned
eps floating point precision
pi pi
i, j sqrt(-1)
inf Infinity
NaN Not-a-Number
clock wall clock
date date
flops floating point operation count
nargin number of function input arguments
nargout number of function output arguments
%%%%%%%%%%%%%%% Disk Files %%%%%%%%%%%%%%%
chdir change current directory
delete delete file
diary diary of the session
dir directory of files on disk
load load variables from file
save save variables to file
type list function or file
what show M-files on disk
fprintf write to a file
pack compact memory via "save"
%%%%%%%%%%%%%%% Special Matrices %%%%%%%%%%%%%%%
compan companion
diag diagonal
eye identity
gallery esoteric
hadamard Hadamard
hankel Hankel
hilb Hilbert
invhilb inverse Hilbert
linspace linearly spaced vectors
logspace logarithmically spaced vectors
magic magic square
meshdom domain for mesh points
ones constant
rand random elements
toeplitz Toeplitz
vander Vandermonde
zeros zero
%%%%%%%%%%%%%%% Matrix Manipulation %%%%%%%%%%%%%%%
rot90 rotation
fliplr flip matrix left-to-right
flipud flip matrix up-to-down
diag diagonal matrices
tril lower triangular part
triu upper triangular part
reshape reshape
.' transpose
: convert matrix to single column; "A(:)"
%%%%%%%%%%%% Relational and Logical Functions %%%%%%%%%
any logical conditions
all logical conditions
find find array indices of logical values
isnan detect NaNs
finite detect infinities
isempty detect empty matrices
isstr detect string variables
strcomp compare string variables
%%%%%%%%%%%%%%% Control Flow %%%%%%%%%%%%%%
if conditionally execute statements
elseif used with "if"
else used with "if"
end terminate "if", "for", "while"
for repeat statements a number of times
while do while
break break out of "for" and "while" loops
return return from functions
pause pause until key pressed
%%%%%%%%%%%%%% Programming and M-files %%%%%%%%%%%
input get numbers from keyboard
keyboard call keyboard as M-file
error display error message
function define function
eval interpret text in variables
feval evaluate function given by string
echo enable command echoing
exist check if variables exist
casesen set case sensitivity
global define global variables
startup startup M-file
getenv get environment string
menu select item from menu
etime elapsed time
%%%%%%%%%%%% Text and Strings %%%%%%%%%%%%%%%%%
abs convert string to ASCII values
eval evaluate text macro
num2str convert number to string
int2str convert integer to string
setstr set flag indicating matrix is a string
sprintf convert number to string
isstr detect string variables
strcomp compare string variables
hex2num convert hex string to number
%%%%%%%%%%%%%% Command Window %%%%%%%%%%%%%%%%%%%%%
clc clear command screen
home move cursor home
format set output display format
disp display matrix or text
fprintf print formatted number
echo enable command echoing
%%%%%%%%%%%%%%%%% Graph Paper %%%%%%%%%%%%%%%%%
plot linear X-Y plot
loglog loglog X-Y plot
semilogx semi-log X-Y plot
semilogy semi-log X-Y plot
polar polar plot
mesh 3-dimensional mesh surface
contour contour plot
meshdom domain for mesh plots
bar bar charts
stairs stairstep graph
errorbar add error bars
%%%%%%%%%% Graph Annotation %%%%%%%%%%%%%%%%
title plot title
xlabel x-axis label
ylabel y-axis label
grid draw grid lines
text arbitrarily position text
gtext mouse-positioned text
ginput graphics input
%%%%%%%%%% Graph Window Control %%%%%%%%%%%
axis manual axis scaling
hold hold plot on screen
shg show graph window
clg clear graph window
subplot split graph window
%%%%%%%%%% Graph Window Hardcopy %%%%%%%%%%%%
print send graph to printer
prtsc screen dump
meta graphics metafile
%%%%%%%%% Elementary Math Functions %%%%%%%%%%%
abs absolute value or complex magnitude
angle phase angle
sqrt square root
real real part
imag imaginary part
conj complex conjugate
round round to nearest integer
fix round toward zero
floor round toward -infinity
ceil round toward infinity
sign signum function
rem remainder
exp exponential base e
log natural logarithm
log10 log base 10
%%%%%%%%%%% Trigonometric Functions %%%%%%%%%%%%%%%
sin sine
cos cosine
tan tangent
asin arcsine
acos arccosine
atan arctangent
atan2 four quadrant arctangent
sinh hyperbolic sine
cosh hyperbolic cosine
tanh hyperbolic tangent
asinh hyperbolic arcsine
acosh hyperbolic arccosine
atanh hyperbolic arctangent
%%%%%%%%%%%%%%% Special Functions %%%%%%%%%%%%%%%%%
bessel bessel function
gamma gamma function
rat rational approximation
erf error function
inverf inverse error function
ellipk complete elliptic integral of first kind
ellipj Jacobian elliptic integral
%%%%%%%%%% Decompositions and Factorizations %%%%%%%%%
balance balanced form
backsub backsubstitution
cdf2rdf convert complex-diagonal to real-diagonal
chol Cholesky factorization
eig eigenvalues and eigenvectors
hess Hessenberg form
inv inverse
lu factors from Gaussian elimination
nnls nonnegative least squares
null null space
orth orthogonalization
pinv pseudoinverse
qr orthogonal-triangular decomposition
qz QZ algorithm
rref reduced row echelon form
schur Schur decomposition
svd singular value decomposition
%%%%%%%%%%%% Matrix Conditioning %%%%%%%%%%%%%
cond condition number in 2-norm
norm 1-norm, 2-norm, F-norm, infinity-norm
rank rank
rcond condition estimate (reciprocal)
%%%%%%%%%%%% Elementary Matrix Functions %%%%%%%%%%%%%%%
expm matrix exponential
logm matrix logarithm
sqrtm matrix square root
funm arbitrary matrix function
poly characteristic polynomial
det determinant
trace trace
kron Kronecker tensor product
%%%%%%%%%%%%%%%% Polynomials %%%%%%%%%%%%%%%%
poly characteristic polynomial
roots polynomial roots - companion matrix method
roots1 polynomial roots - Laguerre's method
polyval polynomial evaluation
polyvalm matrix polynomial evaluation
conv multiplication
deconv division
residue partial-fraction expansion
polyfit polynomial curve fitting
%%%%%%%%%%%%%%% Column-wise Data Analysis %%%%%%%%%%%%%%
max maximum value
min minimum value
mean mean value
median median value
std standard deviation
sort sorting
sum sum of elements
prod product of elements
cumsum cumulative sum of elements
cumprod cumulative product of elements
diff approximate derivatives
hist histograms
corrcoef correlation coefficients
cov covariance matrix
cplxpair reorder into complex pairs
%%%%%%%%%%% Signal Processing %%%%%%%%%%%%%%%
abs complex magnitude
angle phase angle
conv convolution
corrcoef correlation coefficients
cov covariance
deconv deconvolution
fft radix-2 fast Fourier transform
fft2 two-dimensional FFT
ifft inverse fast Fourier transform
ifft2 inverse 2-D FFT
fftshift FFT rearrangement
%%%%%%%%%%%%%%%% Interpolation %%%%%%%%%%%%%%%%%%%
spline cubic spline
table1 1-D table look-up
table2 2-D table look-up
%%%%%%%%% Differential Equation Solution %%%%%%%%
ode23 2nd/3rd order Runge-Kutta method
ode45 4th/5th order Runge-Kutta-Fehlberg method
%%%%%%%%% Nonlinear Equations and Optimization %%%%%%%
fmin minimum of a function of one variable
fmins minimum of a multivariable function
fsolve solution of a system of nonlinear equations
(zeros of a multivariable function)
fzero zero of a function of one variable