# Basic Matrix Operations

This example shows basic techniques and functions for working with matrices in the MATLAB® language.

First, let's create a simple vector with 9 elements called `a`

.

a = [1 2 3 4 6 4 3 4 5]

`a = `*1×9*
1 2 3 4 6 4 3 4 5

Now let's add 2 to each element of our vector, `a`

, and store the result in a new vector.

Notice how MATLAB requires no special handling of vector or matrix math.

b = a + 2

`b = `*1×9*
3 4 5 6 8 6 5 6 7

Creating graphs in MATLAB is as easy as one command. Let's plot the result of our vector addition with grid lines.

```
plot(b)
grid on
```

MATLAB can make other graph types as well, with axis labels.

bar(b) xlabel('Sample #') ylabel('Pounds')

MATLAB can use symbols in plots as well. Here is an example using stars to mark the points. MATLAB offers a variety of other symbols and line types.

```
plot(b,'*')
axis([0 10 0 10])
```

One area in which MATLAB excels is matrix computation.

Creating a matrix is as easy as making a vector, using semicolons (;) to separate the rows of a matrix.

A = [1 2 0; 2 5 -1; 4 10 -1]

`A = `*3×3*
1 2 0
2 5 -1
4 10 -1

We can easily find the transpose of the matrix `A`

.

B = A'

`B = `*3×3*
1 2 4
2 5 10
0 -1 -1

Now let's multiply these two matrices together.

Note again that MATLAB doesn't require you to deal with matrices as a collection of numbers. MATLAB knows when you are dealing with matrices and adjusts your calculations accordingly.

C = A * B

`C = `*3×3*
5 12 24
12 30 59
24 59 117

Instead of doing a matrix multiply, we can multiply the corresponding elements of two matrices or vectors using the .* operator.

C = A .* B

`C = `*3×3*
1 4 0
4 25 -10
0 -10 1

Let's use the matrix A to solve the equation, A*x = b. We do this by using the \ (backslash) operator.

b = [1;3;5]

`b = `*3×1*
1
3
5

x = A\b

`x = `*3×1*
1
0
-1

Now we can show that A*x is equal to b.

r = A*x - b

`r = `*3×1*
0
0
0

MATLAB has functions for nearly every type of common matrix calculation.

There are functions to obtain eigenvalues ...

eig(A)

`ans = `*3×1*
3.7321
0.2679
1.0000

... as well as the singular values.

svd(A)

`ans = `*3×1*
12.3171
0.5149
0.1577

The "poly" function generates a vector containing the coefficients of the characteristic polynomial.

The characteristic polynomial of a matrix `A`

is

$$det(\lambda I-A)$$

p = round(poly(A))

`p = `*1×4*
1 -5 5 -1

We can easily find the roots of a polynomial using the `roots`

function.

These are actually the eigenvalues of the original matrix.

roots(p)

`ans = `*3×1*
3.7321
1.0000
0.2679

MATLAB has many applications beyond just matrix computation.

To convolve two vectors ...

q = conv(p,p)

`q = `*1×7*
1 -10 35 -52 35 -10 1

... or convolve again and plot the result.

r = conv(p,q)

`r = `*1×10*
1 -15 90 -278 480 -480 278 -90 15 -1

plot(r);

At any time, we can get a listing of the variables we have stored in memory using the `who`

or `whos`

command.

whos

Name Size Bytes Class Attributes A 3x3 72 double B 3x3 72 double C 3x3 72 double a 1x9 72 double ans 3x1 24 double b 3x1 24 double p 1x4 32 double q 1x7 56 double r 1x10 80 double x 3x1 24 double

You can get the value of a particular variable by typing its name.

A

`A = `*3×3*
1 2 0
2 5 -1
4 10 -1

You can have more than one statement on a single line by separating each statement with commas or semicolons.

If you don't assign a variable to store the result of an operation, the result is stored in a temporary variable called `ans`

.

sqrt(-1)

ans = 0.0000 + 1.0000i

As you can see, MATLAB easily deals with complex numbers in its calculations.