The basic data type in Matlab is an n-dimensional array of double precision numbers. Matlab 5 differs from earlier versions of Matlab in that other data types are supported (also in the fact that general, multi-dimensional arrays are supported; in earlier versions, every variable was a two-dimensional array (matrix), with one-dimensional arrays (vectors) and zero-dimensional arrays (scalars) as special cases). The new data types include structures (much like structures in the C programming language--data values are stored in named fields), classes, and ``cell arrays'', which are arrays of possibly different data types (for example, a one-dimensional array whose first entry is a scalar, second entry a string, third entry a vector). I mostly discuss the basic features using n-dimensional arrays, but I briefly discuss the other data types later in the paper.
The following commands show how to enter numbers, vectors and matrices,
and assign them to variables (>> is the
Matlab prompt on
my computer; it may be different with different computers or different
versions of Matlab. I am using version 5.2.0.3084. On my Unix workstation,
I start Matlab by typing matlab at the Unix prompt.):
>> a = 2
a =
2
>> x = [1;2;3]
x =
1
2
3
>> A = [1 2 3;4 5 6;7 8 0]
A =
1 2 3
4 5 6
7 8 0
Notice that the rows of a matrix are separated by semicolons, while the
entries on a row are separated by spaces (or commas).
A useful command is ``whos'', which displays the names of all defined variables and their types:
>> whos Name Size Bytes Class A 3x3 72 double array a 1x1 8 double array x 3x1 24 double array Grand total is 13 elements using 104 bytesNote that each of these three variables is an array; the ``shape'' of the array determines its exact type. The scalar a is a
One way to enter a n-dimensional array (n>2) is to concatenate two
or more (n-1)-dimensional arrays using the cat command. For example,
the following command concatenates two
arrays to create a
array:
>> C = cat(3,[1,2;3,4;5,6],[7,8;9,10;11,12])
C(:,:,1) =
1 2
3 4
5 6
C(:,:,2) =
7 8
9 10
11 12
>> whos
Name Size Bytes Class
A 3x3 72 double array
C 3x2x2 96 double array
a 1x1 8 double array
x 3x1 24 double array
Grand total is 25 elements using 200 bytes
Note that the argument ``3'' in the cat command indicates that
the concatenation is to occur along the third dimension. If D and
E were >> cat(4,D,E)would create a
Matlab allows arrays to have complex entries.
The complex unit
is represented by either of the built-in
variables i or j:
>> sqrt(-1)
ans =
0 + 1.0000i
This example shows how complex numbers are displayed in Matlab; it also
shows that the square root function is a built-in feature.
The result of the last calculation not assigned to a variable is automatically assigned to the variable ans, which can then be used as any other variable in subsequent computations. Here is an example:
>> 100^2-4*2*3
ans =
9976
>> sqrt(ans)
ans =
99.8799
>> (-100+ans)/4
ans =
-0.0300
The arithmetic operators work as expected for scalars. A built-in variable
that is often useful is >> pi
ans =
3.1416
Above I pointed out that the square root function is built-in; other common scientific functions, such as sine, cosine, tangent, exponential, and logarithm are also pre-defined. For example:
>> cos(.5)^2+sin(.5)^2
ans =
1
>> exp(1)
ans =
2.7183
>> log(ans)
ans =
1
Other elementary functions, such as hyperbolic and inverse trigonometric
functions, are also defined.
At this point, rather than providing a comprehensive list of functions available in Matlab, I want to explain how to get this information from Matlab itself. An extensive online help system can be accessed by commands of the form help <command-name>. For example:
>> help ans
ANS The most recent answer.
ANS is the variable created automatically when expressions
are not assigned to anything else. ANSwer.
>> help pi
PI 3.1415926535897....
PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897....
A good place to start is with the command help help, which explains how the help systems works, as well as some related commands. Typing help by itself produces a list of topics for which help is available; looking at this list we find the entry ``elfun--elementary math functions.'' Typing help elfun produces a list of the math functions available. We see, for example, that the inverse tangent function (or arctangent) is called atan:
>> pi-4*atan(1)
ans =
0
It is often useful, when entering a matrix, to suppress the display; this is done by ending the line with a semicolon (see the first example in the next section). The command more can be used to cause Matlab to display only one page of output at a time. Typing more on causes Matlab to pause between pages of output from subsequent commands; as with the Unix ``more'' command, a space character then advances the output by a page, a carriage return advances the output one line, and the character ``q'' ends the output. Once the command more on is issued, this feature is enabled until the command more off is given.