Getting Started With MATLAB

By David Hart (Modified by Jim Albert)

MATLAB is a computer program for people doing numerical computation. It began as a "MATrix LABoratory" program, intended to provide interactive access to the libraries Linpack and Eispack. These are carefully tested, high-quality programming packages for solving linear equations and eigenvalue problems. The goal of MATLAB is to enable scientists to use matrix-based techniques to solve problems, using state-of-the-art code, without having to write programs in traditional languages like C and Fortran. More capabilities have been added as time has passed -- many more commands, and very fine graphics capabilities.

MATLAB is available for many different kinds of computers. At Bowling Green State University, we have MATLAB, versions 4 and 5, on the Macintosh computers in the Scientific Computing Lab; and Matlab 4 is available on the Sigma and Alpha computers.. A student edition is available from local bookstores for your personal Windows and Macintosh systems.

This document is intended to be used while sitting at a Macintosh. It is assumed that you will enter the commands shown, and then think about the result; if you have any questions, either ask your instructor or send e-mail to the address given at the end of this document.


BASICS

On the Macintosh, you launch MATLAB by selecting either MATLAB 4 or MATLAB 5 from the Application list on the Apple Menu. You will see the MATLAB command window with the following:

        Commands to get started: intro, demo, help help
        Commands for more information: help, whatsnew, info, subscribe
        >> 

Our first command will make a record of the session, in a file named "session.txt". Type:

	>> diary session.txt

[The ">>" is MATLAB's prompt, you won't need to type it].

Arithmetic uses some fairly standard notation. More than one command may be entered on a single line, if they are seperated by commas.

	>> 2+3
	>> 3*4, 4^2

Powers are performed before division and multiplication, which are done before subtraction and addition.

	>> 2+3*4^2

The arrow keys allow "command-line editing," which cuts down on the amount of typing required, and allows easy error correction. Press the "up" arrow, and add "/2." What will this produce?

	>> 2+3*4^2/2

Parentheses may be used to group terms, or to make them more readable.

	>> (2 + 3*4^2)/2

The equality sign is used to assign values to variables.

	>> x = 3
	>> y = x^2
	>> y/x

If no other name is given, an answer is saved in a variable named "ans."

	>> ans, z=2*ans, ans

Here z was defined in terms of ans. The result was called z, so ans was unchanged.

To get a list of your variables, use one of

	>> who, whos

In MATLAB, like C or Fortran, variables must have a value [which might be numerical, or a string of characters, for example]. Complex numbers are automatically available [by default, both i and j are initially aliased to sqrt(-1)]. All arithmetic is done to double precision [about 16 decimal digits], even though results are normally displayed in a shorter form.

	>> a=sqrt(2)
	>> format long, b=sqrt(2)
	>> a-b
        >> format short

To save the value of the variable "x" to a plain text file named "x.value" use

	>> save x.value x -ascii

To save all variables in a file named mysession.mat, in reloadable format, use

	>> save mysession

To restore the session, use

	>> load mysession

To find out about this kind of thing, consult the help system. There's even an HTML version! There's also a "lookfor" command, so that you don't have to guess the topic name precisely.

	>> help
	>> help general
	>> doc

Finally, to stop MATLAB and return to the Finder, use

	>> quit

Then, to see the saved files from your session, open the appropriate file with any word processer.


MATRICES

A matrix is a rectangular array of numbers: for example,

        [ 1 2 3 ]
        [ 4 5 6 ]

defines a matrix with 2 rows, 3 columns, 6 elements. We will refer you to the Math Department for an explanation of the arithmetic of matrices, what they have to do with anything [they're one of the basic tools of science; the course is called Linear Algebra].

MATLAB is designed to make matrix manipulation as simple as possible. Every MATLAB variable refers to a matrix [a 1 row by 1 column matrix is a number]. Start MATLAB again, and enter the following command.

	>> a = [1,2,3; 4 5 6]

Note that:

 

The element in the i'th row and j'th column of a is referred to in the usual way:

	>> a(1,2), a(2,3)

It's very easy to modify matrices:

	>> a(2,3) = 10

The transpose of a matrix is the result of interchanging rows and columns. MATLAB denotes the [conjugate] transpose by following the matrix with the single-quote [apostrophe].

	>> a'
	>> b=[1+i 2 + 2*i 3 - 3*i]'

New matrices may be formed out of old ones, in many ways. Enter the following commands; before pressing the enter key, try to predict their results!

	>> c = [a; 7 8 9]
	>> [a; a; a]
	>> [a, a, a]
	>> [a', b]
	>> [ [a; a; a], [b; b] ]

There are many built-in matrix constructions. Here are a few:

	>> rand(1,3), rand(2)
	>> zeros(3)
	>> ones(3,2)
	>> eye(3), eye(2,3)
	>> magic(3)
	>> hilb(5)

This last command creates the 5 by 5 "Hilbert matrix," a favorite example in numerical analysis courses.

Use a semicolon to suppress output:

        >> s = zeros(20,25);

This is valuable, when working with large matrices. If you forget it, and start printing screenfuls of unwanted data, Control-C is MATLAB's "break" key.

To get more information on these, look at the help pages for elementary and special matrices.

	>> help elmat
	>> help specmat

A central part of MATLAB syntax is the "colon operator," which produces a list.

	>> -3:3

The default increment is by 1, but that can be changed.

	>> x = -3 : .3 : 3

This can be read: "x is the name of the list, which begins at -3, and whose entries increase by .3, until 3 is surpassed." You may think of x as a list, a vector, or a matrix, whichever you like.

You may wish use this construction to extract "subvectors," as follows.

	>> x(2:12)
	>> x(9:-2:1)

See if you can predict the result of the following.
[Hint: what will x(2) be? x(10)?].

	>> x=10:100;
	>> x(40:5:60)

The colon notation can also be combined with the earlier method of constructing matrices.

	>> a = [1:6 ; 2:7 ; 4:9]

A very common use of the colon notation is to extract rows, or columns, as a sort of "wild-card" operator which produces a default list. The following command produces the matrix a, followed by its first row [with all of its columns], and then its second column [with all of its rows]. What do you think s(6:7, 2:4) does?

	>> a, a(1,:), a(:,2)

        >> s = rand(10,5);  s(6:7, 2:4)

Matrices may also be constructed by programming. Here is an example, creating a "program loop."

	>> for i=1:10, 
	>> 	for j=1:10,
	>> 		t(i,j) = i/j;
	>> 	end
	>> end

There are actually two loops here, with one nested inside the other; they define t(1,1), t(1,2), t(1,3) ... t(1,10), t(2,1), t(2,2) ... , t(2,10), ... t(10,10) [in that order].

	>> t


MATRIX ARITHMETIC

If necessary, re-enter the matrices

	>> a = [1 2 3 ; 4 5 6 ; 7 8 10], b = [1 1 1]'

Scalars multiply matrices as expected, and matrices may be added in the usual way; both are done "element by element."

	>> 2*a, a/4
	>> a + [b,b,b]

Scalars added to matrices produce a "strange" result, but one that is sometimes useful; the scalar is added to every element.

	>> a+1, b+2

Matrix multiplication requires that the sizes match. If they don't, an error message is generated.

	>> a*b, b*a
	>> b'*a
	>> a*a', a'*a
	>> b'*b, b*b'

To perform an operation on a matrix element-by-element, precede it by a period.

	>> a^2, a.^2
	>> a.*a, b.*b
	>> 1 ./ a
	>> 1./a.^2

One of the main uses of matrices is in representing systems of linear equations. If a is a matrix containing the coefficients of a system of linear equations, x is a column vector containing the "unknowns," and b is the column vector of "right-hand sides," the constant terms, then the matrix equation

a x =b

represents the system of equations. MATLAB provides a very efficient mechanism for solving linear equations:

	>> x = a \ b

This can be read "x equals a-inverse times b." To verify this assertion, look at

	>> a*x, a*x - b


GRAPHICS

MATLAB has outstanding graphics capabilities . Start with

	>> x = -10:.1:10;
	>> plot( x.^2 )
        >> figure
	>> plot( x, x.^2 )
        >> figure
	>> plot( x.^2, x )

Note that x must be assigned values, before the plot command is issued [although you could use plot( (-10 : .1 : 10) .^ 2 ) if you really really wanted to].

	>> plot( x, x.*sin(x) )
	>> plot( x.*cos(x), x.*sin(x) )
	>> comet( x.*cos(x), x.*sin(x) )
    >> plot3(x.*cos(x),x.*sin(x),x)

 

The following commands bring up lists of useful graphics commands [each has a help page of its own].

	>> help plotxy
	>> help plotxyz
	>> help graphics

To print MATLAB graphics, just enter "print" at the MATLAB prompt; the current figure window will be sent to the printer. Alternately, select the File menu option Print when the figure window is the current window.


SCRIPTS AND FUNCTIONS

MATLAB statements can be prepared with any word processer, and stored in a file for later use. The file is referred to as a script, or an "m-file" (since they must have names of the form foo.m). Writing m-files will make you much more productive.

You can create a m-file by selecting the New M-file option on the File Menu. Type the following commands in the window and Save the file with the name sketch.m:

	[x y] = meshgrid(-3:.1:3, -3:.1:3);
	z = x.^2 - y.^2;
	mesh(x,y,z);

Then start MATLAB from the directory containing this file, and enter

	>> sketch

The result is the same as if you had entered the three lines of the file, at the prompt.

You can also enter data this way: if a file named mymatrix.m in the current working directory contains the lines

	A = [2 3 4; 5 6 7; 8 9 0]
	inv(A)
	quit

then the command

	>> mymatrix

reads that file, generates A and the inverse of A, and quits MATLAB [quitting is optional]. You may prefer to do this, if you use the same data repeatedly, or have an editor that you like to use. You can use Control-Z to suspend MATLAB, then edit the file, and then use "fg" to bring MATLAB back to the foreground, to run it.

 

Functions are like scripts, but are compiled the first time they are used in a given session, for speed. Create a file (again by selecting New M-file in the File menu), named sqroot.m, containing the following lines.

	function sqroot(x)
	% Compute square root by Newton's method

	% Initial guess
	xstart = 1;

	for i = 1:100
		xnew = ( xstart + x/xstart)/2;
		disp(xnew);
		if abs(xnew - xstart)/xnew < eps, break, end;
		xstart = xnew;
	end

Save this file, start MATLAB, and enter the commands

	>> format long
	>> sqroot(19)