**MATLAB**stands for MATRIX LABORATORY. It is primarily a tool for matrix computations & was developed by John Little and Cleve Moler of MathWorks. MATLAB is a high-level language whose basic data type is a matrix that does not require dimensioning. There is no compilation and linking as is done in high-level languages, such as C.

MATLAB has a rich set of plotting capabilities. The graphics are also integrated in MATLAB. Since MATLAB is also a programming environment, a user can extend the functional capabilities of MATLAB by writing new modules.

MATLAB has a large collection of toolboxes in a variety of domains. For Example control system, signal processing, neural network, image processing, and system identification. The toolboxes consist of functions that can be used to perform computations in a specific domain.

**1. MATLAB BASIC OPERATIONS:**

The basic data object in MATLAB is a matrix which can have real or complex elements. Scalars are thought of as a 1-by-1 matrix. Vectors are considered as matrices with a row or column. MATLAB has no dimension statement or type declarations. Storage of data and variables is allocated automatically once the data and variables are used.

MATLAB statements are normally of the form:

variable = expression

Expressions typed by the user are interpreted and immediately evaluated by the MATLAB system. If a MATLAB statement ends with a semicolon, MATLAB evaluates the statement but suppresses the display of the results. MATLAB is also capable of executing a number of commands that are stored in a file.

A matrix

A =

1 2 3

2 3 4

3 4 5

may be entered as A = [1 2 3; 2 3 4; 3 4 5];

A row vector B with elements B = [ 6 9 12 15 18 ] can be entered in MATLAB as

B = [6 9 12 15 18];

or

B = [6 , 9,12,15,18]

For readability, it is better to use spaces rather than commas between the elements. The row vector B can be turned into a column vector by transposition, which is obtained by typing

C = B’

or

C=transpose(B)

The above results in

C =

6

9

12

15

18

Other ways of entering the column vector C is

C = [6; 9; 12; 15; 18]

MATLAB is case sensitive in naming variables, commands and functions. Thus b and B are not the same variable. If you do not want MATLAB to be case sensitive, you can use the command

casesen off

To obtain the size of a specific variable, you can use size ( ). For example, to find the size of A, the following command can be used:

size(A)

The result will be a row vector with two entries. The first is the number of rows in A, the second the number of columns in A.

**2. MATRIX OPERATIONS:**

The basic matrix operations are addition(+), subtraction(-), multiplication (*), and conjugate transpose(‘) of matrices. In addition to the above basic operations, MATLAB has two forms of matrix division: the left inverse operator \ or the right inverse operator /. Matrices of the same dimension may be subtracted or added. Thus if E and F are entered in MATLAB as

E = [7 2 3; 4 3 6; 8 1 5];

F = [1 4 2; 6 7 5; 1 9 1];

and

G = E - F

H = E + F

then, matrices G and H will appear on the screen as

G =

6 -2 1

-2 -4 1

7 -8 4

H =

8 6 5

10 10 11

9 10 6

A scalar (1-by-1 matrix) may be added to or subtracted from a matrix. In this particular case, the scalar is added to or subtracted from all the elements of another matrix. For example,

J = H + 1

gives

J =

9 7 6

11 11 12

10 11 7

Matrix multiplication is defined provided the inner dimensions of the two operands are the same. Thus, if X is an n-by-m matrix and Y is i-by-j matrix, X*Y is defined provided m is equal to i. Since E and F are 3-by-3 matrices, the product

Q = E*F

results as

Q =

22 69 27

28 91 29

19 84 26

Any matrix can be multiplied by a scalar. For example,

2*Q

gives

ans =

44 138 54

56 182 58

38 168 52

Note that if a variable name and the “=” sign are omitted, a variable name ans is automatically created. Matrix division can either be the left division operator \ or the right division operator /. The right division a/b, for instance, is algebraically equivalent to

a by b

while the left division a\b is algebraically equivalent to

b by a

If Z * I = V and Z is non-singular, the left division, Z\V is equivalent to MATLAB expression

I = inv(Z) *V where inv is the MATLAB function for obtaining the inverse of a matrix.

The right division denoted by V/Z is equivalent to the MATLAB expression I = V *inv(Z)

**Some Utility Matrices**

**ones(n,m):**Produces n-by-m matrix with all the elements beingunity

**eye(n):**gives n-by-n identity matrix

**zeros(n,m):**Produces n-by-m matrix of zeros

**diag(A):**Produce a vector consisting of diagonal of a square matrix A

**3. ELEMENT-BY-ELEMENT ARITHMETIC OPERATIONS**

Preceding the linear algebraic matrix operations, * / \ ‘ , by a period (.) indicates an array or element-by-element operation. Thus, the operators .* , .\ , ./, .^ , represent element-by-element multiplication, left division, right division, and raising to the power, respectively. For addition and subtraction, the array and matrix operations are the same. Thus, + and .+ can be regarded as an array or matrix addition.

If A1 and B1 are matrices of the same dimensions, then A1.*B1 denotes an array whose elements are products of the corresponding elements of A1 and B1.

Thus, if

A1 = [2 7 6; 8 9 10];

B1 = [6 4 3; 2 3 4]; then

C1 = A1.*B1 results in

C1 =

12 28 18

16 27 40

An array operation for left and right division also involves element-by-element operation. The expressions A1./B1 and A1.\B1 give the quotient of element by-element division of matrices A1 and B1. The statement

D1 = A1./B1 gives the result

D1 =

0.3333 1.7500 2.0000

4.0000 3.0000 2.5000

and the statement

E1 = A1.\B1 gives

E1 =

3.0000 0.5714 0.5000

0.2500 0.3333 0.4000

The array operation of raising to the power is denoted by .^. The general statement will be of the form:

q = r1.^s1

If r1 and s1 are matrices of the same dimensions, then the result q is also a matrix of the same dimensions. For example, if

r1 = [ 7 3 5];

s1 = [ 2 4 3];

then

q1 = r1.^s1 gives the result

q1 =

49 81 125

One of the operands can be scalar. For example,

q2 = r1.^2

q3 = (2).^s1 will give

q2 =

49 9 25 and

q3 =

4 16 8

Note that when one of the operands is scalar, the resulting matrix will have the same dimensions as the matrix operand.

**4. THE COLON SYMBOL (:)**

The colon symbol (:) is one of the most important operators in MATLAB. It can be used (1) to create vectors and matrices, (2) to specify sub-matrices and vectors, and (3) to perform iterations. The statement

t1 = 1:6 will generate a row vector containing the numbers from 1 to 6 with unit increment.

MATLAB produces the result

t1 =

1 2 3 4 5 6

Non-unity, positive or negative increments, may be specified. For example, the statement

t2 = 3:-0.5:1 will result in

t2 =

3.0000 2.5000 2.0000 1.5000 1.0000

The statement

t3 = [(0:2:10);(5:-0.2:4)] will result in a 2-by-4 matrix

t3 =

0 2.0000 4.0000 6.0000 8.0000 10.0000

5.0000 4.8000 4.6000 4.4000 4.2000 4.0000

Other MATLAB functions for generating vectors are linspace and logspace. Linspace generates linearly evenly spaced vectors, while logspace generates logarithmically evenly spaced vectors. The usage of these functions is of the form:

linspace(i_value, f_value, np)

logspace(i_value, f_value, np)

where i_value is the initial value, f_value is the final value, np is the total number of elements in the vector.

For example,

t4 = linspace(2, 6, 8) will generate the vector

t4 =

Columns 1 through 7

2.0000 2.5714 3.1429 3.7143 4.2857 4.8571 5.4286 6.0000

Individual elements in a matrix can be referenced with subscripts inside parentheses. For example, t2(4) is the fourth element of vector t2. Also, for matrix t3, t3(2,3) denotes the entry in the second row and third column. Using the colon as one of the subscripts denotes all of the corresponding row or column. For example, t3(:,4) is the fourth column of matrix t3. Thus, the statement

t5 = t3(:,4) will give

t5 =

6.0000

Also, the statement t3(2,:) is the second row of matrix t3. That is the statement

t6 = t3(2,:)

will result in

t6 =

5.0000 4.8000 4.6000 4.4000 4.2000 4.0000

If the colon exists as the only subscript, such as t3(:), the latter denotes the elements of matrix t3 strung out in a long column vector. Thus, the statement

t7 = t3(:)

will result in

t7 =

0

5.0000

2.0000

4.8000

4.0000

4.6000

6.0000

4.4000

8.0000

4.2000

10.0000

4.0000

**5. M-FILES**

Normally, when single line commands are entered, MATLAB processes the commands immediately and displays the results. MATLAB is also capable of processing a sequence of commands that are stored in files with extension m. MATLAB files with extension m are called m-files.

Function files are m-files that are used to create new MATLAB functions.Variables defined and manipulated inside a function file are local to the function, and they do not operate globally on the workspace. However, arguments may be passed into and out of a function file.

The general form of a function file is

function variable(s) = function_name (arguments)

% help text in the usage of the function

%

.

.

end

Example: Write a MATLAB function to obtain roots of the quadratic equation ax2 + bx + c = 0 ?

function rt = rt_quad(coef)

%

% rt_quad is a function for obtaining the roots of

% of a quadratic equation

% usage: rt = rt_quad(coef)

% coef is the coefficients a,b,c of the quadratic

% equation ax*x + bx + c =0

% rt are the roots, vector of length 2

% coefficient a, b, c are obtained from vector coef

a = coef(1); b = coef(2); c = coef(3);

int = b^2 - 4*a*c;

if int > 0

srint = sqrt(int);

x1= (-b + srint)/(2*a);

x2= (-b - srint)/(2*a);

elseif int == 0

x1= -b/(2*a);

x2= x1;

elseif int < 0

srint = sqrt(-int);

p1 = -b/(2*a);

p2 = srint/(2*a);

x1 = p1+p2*j;

x2 = p1-p2*j;

end

rt =[x1;

x2];

end

The above MATLAB script can be found in the function file rt_quad.m.

We can use m-file function, rt_quad, to find the roots of the following quadratic equations:

(a) x2 + 3x + 2 = 0

(b) x2 + 2x + 1 = 0

(c) x2 -2x +3 = 0

The following statements, that can be found in the m-file ex1_4.m, can be

used to obtain the roots:

ca = [1 3 2];

ra = rt_quad(ca)

cb = [1 2 1];

rb = rt_quad(cb)

cc = [1 -2 3];

rc = rt_quad(cc)

The following results will be obtained:

ra =

-1

-2

rb =

-1

-1

rc=

1.0000 + 1.4142i

1.0000 - 1.4142i