Matlab commands and variables

Previous (Starting Matlab) / Index / Next (Download Software and set Path)

# Matlab commands and variables

## Contents ## Introduction

Matlab, MATrix LABoratory, is a powerful, high level language and a technical computing environment which provides core mathematics and advanced graphical tools for data analysis, visualisation, and algorithm and application development. It is intuitive and easy to use. Many common functions have already been programmed in the main program or on one of the many toolboxes. In MATLAB everything is a matrix, (this is the mantra: everything is a matrix) and therefore it is a bit different from other programming languages, such as C or JAVA. Matrix operations are programmed so that element-wise operations or linear combinations are more efficient than loops over the array elements. The for instruction is recommended only as last resource.

## Matrices and operations

A matrix should be understood in the mathematical sense:

```% "A rectangular array of symbols or mathematical expressions arranged in rows and columns,
treated as a single entity, and now usually written within round brackets"
```

and not as (other definitions from the Oxford dictionary) an uterus of a mammal or the amorphous or fibrillar material that surrounds cells. The simplest matrix is a 1 x 1 array with one scalar value, or a single number. This value can be assigned to a variable which will store the value and can later be used in conjunction with other variables. For example to store the value 5 in a matrix with the name "a", the following code is typed in the coomand window after the prompt (>>):

```
a=5
```
```a =

5

```

After pressing enter the value is stored, the workspace will show the an entry for "a" and Matlab will "echo" the answer to the command entered. In this case, the echo just repeats what was typed before, but it can be used with more complex data. For instance:

```b = 45 + 123 +  a
```
```b =

173

```

In this way, Matlab can be used as a calculator and no variables are required if the resulting value is not to be stored, Matlab will store it in a temporary variable called 'ans'. The order of precedence in which the operations are carried out is exponentiation, then multiplication/division and then addition and subtraction, but this can be modified by using parenthesis. For instance:

```1 + 2 * 3 ^ 4
```
```ans =

163

```

is equivalent to:

```1 + (2 * (3 ^ 4))
```
```ans =

163

```

and is different from

```(((1 + 2) * 3) ^ 4)
```
```ans =

6561

```

Matrix operations are programmed in Matlab so that element-wise operations or linear combinations are more efficient than loops over the array elements and therefore Matlab is a bit different from other programming languages, such as C or JAVA. The for instruction is not as widely used as in C. Once you are in MATLAB, many UNIX commands can be used: pwd, cd, ls, ....

To create a matrix you can type its values directly:

```x = [ 1 2 3 4 5 6 7 8 9 10 ];
```

Which is equivalent to:

```x = 1:10;
```

where only initial and final values are specified. It is possible to define the initial and final value and increment (lower limit: increment: upper limit) using the colon operator in the following way:

```z = 0 : 0.1 :20;
```

Both are 1 x 10 matrices. Note that this would be different from:

```y = [1;2;3;4;5;6;7;8;9;10];
```

or

```y=[1:10]';
```

Both are 10 x 1 matrices. The product x*y would yield the inner product of the vectors, a single value, y*x would yield the outer product, a 10 x 10 matrix, while the products x*x and y*y are not valid because the matrix dimensions do not agree. If element-to-element operations are desired then a dot "." before the operator can be used, e. g. x.*x would multiply the elements of the vectors:

```x*y
```
```ans =

385

```
```y*x
```
```ans =

1     2     3     4     5     6     7     8     9    10
2     4     6     8    10    12    14    16    18    20
3     6     9    12    15    18    21    24    27    30
4     8    12    16    20    24    28    32    36    40
5    10    15    20    25    30    35    40    45    50
6    12    18    24    30    36    42    48    54    60
7    14    21    28    35    42    49    56    63    70
8    16    24    32    40    48    56    64    72    80
9    18    27    36    45    54    63    72    81    90
10    20    30    40    50    60    70    80    90   100

```
```x.*x
```
```ans =

1     4     9    16    25    36    49    64    81   100

```

The Matrix obtained by typing:

```mat = [1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7]
```
```mat =

1     2     3     4
2     3     4     5
3     4     5     6
4     5     6     7

```

The final semicolon (;) inhibits the echo to the screen. Any individual value of the matrix can be read by typing (without the semicolon):

```mat (2,2)
```
```ans =

3

```

Mathematical functions can be used over the defined matrices, for example:

```s1 = sin (z);
```

A column or line of a matrix can be obtained from another one:

```s2(1,:) = -s1/2;
s2(2,:) = s1;
s2(3,:) = s1 * 4;
```

## Simple Plots

To display a 1D matrix you can use plot, and for 2D you can use mesh, Figure 1 shows the result of typing:

```plot(s1);
``` ```mesh(s2);
``` More plotting options will be introduced in the following sections.

## Advanced Matrix manipulation

The matrices in Matlab can be manipulated in ways that can simplify your life considerably, so you can try to work as much as possible in Matlab before considering exporting your data to other packages like spreadsheets. But to be able to do this, you need to be able to address the matrix, that is designate or recall only some elements of a matris. Take the following matricies for example:

```a = [1 2 3 1 2 3 1 2 3 1 2 3];
b = [3 3 3 3 2 2 2 2 2 1 1 1];
c = [1 2 3 4 5 6 7 8 9 1 2 3];
```

say you want the elements of a that are larger than 1, you address a with that logical condition (a>1):

```>> a>1
```
```ans =

0     1     1     0     1     1     0     1     1     0     1     1
```

this is the array which indicates which elements of a that are larger than 1 (1) or not (0). We will take this addressing one step forward by not just comparing a matrix but by extracting some elements from it:

```>> a(a>1)
```
```ans =

2     3     2     3     2     3     2     3
```

Notice that the output only contains a subset of the elements of the matrix "a". This concept of "addressing" does not need to be restricted to a single matrix, for instance, if we want to recall the elements of "b" that are at the positions where the elements of "a" are larger than 1 we type:

```>> b(a>1)
```
```ans =

3     3     2     2     2     2     1     1
```

The commands can be nested and combined:

```>> c((a>1)&(b>1))
```
```ans =

2     3     5     6     8     9
```

The previous line will retrieve the elements from "c" for those cases where a>1 AND b>1. If we raise the values:

```>> c((a>2)&(b>2))
```
```ans =

3
```

## Using "help"

To get help over any command you can type:

```help sum
```
``` SUM Sum of elements.
S = SUM(X) is the sum of the elements of the vector X. If
X is a matrix, S is a row vector with the sum over each
column. For N-D arrays, SUM(X) operates along the first
non-singleton dimension.
If X is floating point, that is double or single, S is
accumulated natively, that is in the same class as X,
and S has the same class as X. If X is not floating point,
S is accumulated in double and S has class double.

S = SUM(X,DIM) sums along the dimension DIM.

S = SUM(X,'double') and S = SUM(X,DIM,'double') accumulate
S in double and S has class double, even if X is single.

S = SUM(X,'native') and S = SUM(X,DIM,'native') accumulate
S natively and S has the same class as X.

Examples:
If   X = [0 1 2
3 4 5]

then sum(X,1) is [3 5 7] and sum(X,2) is [ 3
12];

If X = int8(1:20) then sum(X) accumulates in double and the
result is double(210) while sum(X,'native') accumulates in
int8, but overflows and saturates to int8(127).

See also PROD, CUMSUM, DIFF, ACCUMARRAY, ISFLOAT.

Overloaded functions or methods (ones with the same name in other directories)
help timeseries/sum.m
help darray/sum.m
help umat/sum.m
help ndlft/sum.m
help sym/sum.m

Reference page in Help browser
doc sum

```

Use help for the following functions:

```
sign,	subplot,    abs,        imshow, pi
surf,	colormap,   sum,        cumsum, fix
round,  subplot,    whos,       title,  for,
who,    sqrt,       conv,       floor,  det,
fft,    abs,        semilogx,   axes,   axis,
zeros,  ones,       rand,       randn,  real,

```

There are many toolboxes with specialised functions, try:

```% help images 	Image processing toolbox.
% help signal 	Signal processing toolbox.
% help stats	Statistics toolbox
% help nnet	Neural networks toolbox
```

To find out which toolboxes you have installed type ver:

```
ver
```
```-------------------------------------------------------------------------------------
MATLAB Version  (R2007a)
Operating System: Mac OS X  Version: 10.5.8 Build: 9L30
Java VM Version: Java 1.5.0_24 with Apple Inc. Java HotSpot(TM) Client VM mixed mode, sharing
-------------------------------------------------------------------------------------
MATLAB                                                Version 7.4        (R2007a)
Simulink                                              Version 6.6        (R2007a)
Aerospace Blockset                                    Version 2.3        (R2007a)
Aerospace Toolbox                                     Version 1.1        (R2007a)
Bioinformatics Toolbox                                Version 2.5        (R2007a)
CStruct Toolbox                                       Version 2.0.1
Communications Blockset                               Version 3.5        (R2007a)
Communications Toolbox                                Version 3.5        (R2007a)
Control System Toolbox                                Version 8.0        (R2007a)
Curve Fitting Toolbox                                 Version 1.1.7      (R2007a)
Database Toolbox                                      Version 3.3        (R2007a)
Distributed Computing Toolbox                         Version 3.1        (R2007a)
Extended Symbolic Math Toolbox                        Version 3.2        (R2007a)
Filter Design Toolbox                                 Version 4.1        (R2007a)
Financial Derivatives Toolbox                         Version 5.0        (R2007a)
Financial Toolbox                                     Version 3.2        (R2007a)
Fixed-Income Toolbox                                  Version 1.3        (R2007a)
Fixed-Point Toolbox                                   Version 2.0        (R2007a)
Fuzzy Logic Toolbox                                   Version 2.2.5      (R2007a)
GARCH Toolbox                                         Version 2.3.1      (R2007a)
Genetic Algorithm and Direct Search Toolbox           Version 2.1        (R2007a)
Image Processing Toolbox                              Version 5.4        (R2007a)
Instrument Control Toolbox                            Version 2.4.2      (R2007a)
LSM File Toolbox                                      Version 1.1.0
MATLAB Distributed Computing Engine                   Version 3.1        (R2007a)
MATLAB Report Generator                               Version 3.2        (R2007a)
Mapping Toolbox                                       Version 2.5        (R2007a)
Model Predictive Control Toolbox                      Version 2.2.4      (R2007a)
Neural Network Toolbox                                Version 5.0.2      (R2007a)
Optimization Toolbox                                  Version 3.1.1      (R2007a)
Partial Differential Equation Toolbox                 Version 1.0.10     (R2007a)
RF Blockset                                           Version 2.0        (R2007a)
RF Toolbox                                            Version 2.1        (R2007a)
Robust Control Toolbox                                Version 3.2        (R2007a)
Signal Processing Blockset                            Version 6.5        (R2007a)
Signal Processing Toolbox                             Version 6.7        (R2007a)
SimBiology                                            Version 2.1.1      (R2007a)
SimDriveline                                          Version 1.3        (R2007a)
SimEvents                                             Version 2.0        (R2007a)
SimHydraulics                                         Version 1.2        (R2007a)
SimMechanics                                          Version 2.6        (R2007a)
SimPowerSystems                                       Version 4.4        (R2007a)
Simscape                                              Version 1.0        (R2007a)
Simulink Control Design                               Version 2.1        (R2007a)
Simulink Fixed Point                                  Version 5.4        (R2007a)
Simulink Parameter Estimation                         Version 1.2        (R2007a)
Simulink Report Generator                             Version 3.2        (R2007a)
Simulink Response Optimization                        Version 3.1.1      (R2007a)
Simulink Verification and Validation                  Version 2.1        (R2007a)
Spline Toolbox                                        Version 3.3.2      (R2007a)
Stateflow                                             Version 6.6        (R2007a)
Statistics Toolbox                                    Version 6.0        (R2007a)
Symbolic Math Toolbox                                 Version 3.2        (R2007a)
System Identification Toolbox                         Version 7.0        (R2007a)
SystemTest                                            Version 1.1        (R2007a)
Video and Image Processing Blockset                   Version 2.3        (R2007a)
Virtual Reality Toolbox                               Version 4.5        (R2007a)
Wavelet Toolbox                                       Version 4.0        (R2007a)