0% found this document useful (0 votes)
8 views

MATLABBasics

Matlab Basics

Uploaded by

Smit Patel
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

MATLABBasics

Matlab Basics

Uploaded by

Smit Patel
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 35

MATLAB Basics

Prof. R. K. George B. S. Ratanpal


Department of Mathematics Department of Applied Mathematics
Indian Institute of Space Science and Technology, Faculty of Technology & Engineering,
ISRO, The M. S. University of Baroda,
Trivandrum Vadodara

1. INTRODUCTION

( a )What is MATLAB?

MATLAB is an interactive, matrix-based system for scientific and engineering numeric


computation and visualization. The word MATLAB stands for MATrix LABoratory. Each
entry is taken as a matrix in it, in particular scalar is considered as a 1 by 1 matrix. MATLAB
is available for a number of operating systems like Windows, Linux etc. MATLAB was
originally written in FORTRAN and is licensed by The Math Works, Inc,
(http:// www.mathworks.com). The version of MATLAB we use is ver 6.1. There is a
relatively inexpensive student edition available from Prentice Hall Publishers.

( b )What is the advantage of MATLAB over FORTRAN or C?

In languages like FORTRAN & C we have to declare dimensions of matrices used. But, here,
by default each entry is a matrix, therefore dimensioning of a variable is not required. We can
solve complex numerical problems in a fraction of the time required with a programming
language such as FORTRAN or C. MATLAB is also a programmable system. It contains so
many useful algorithms as built-in functions and hence programming itself is easier. The
graphic and multimedia capabilities are also commendable.

( c ) Where can we use MATLAB?

MATLAB is recognized as the interactive program for numerical linear algebra and matrix
computation. In industries, MATLAB is used for research and to solve practical engineering
and mathematical problems. Also, in automatic control theory, statistics and digital signal
processing (Time-Series Analysis) one can use MATLAB. The following tool boxes make it
useful in soft computing at various industrial and scientific areas:
(i) Neural Networks (ii) Optimization
(iii) Genetic Algorithms (iv) Wavelets
(v) Fuzzy Logic (vi) Control systems
(vi) Signal Processing

2. MATLAB GETTING STARTED

By clicking the MATLAB shortcut icon on the desktop of your computer (or selecting from
the program menu) you can access MATLAB. This results in getting MATLAB command
window with its prompt:

R. K. George, B. S. Ratanpal 1
>>
with a blinking cursor appearing right of the prompt, telling you that MATLAB is waiting to
perform a mathematical operation you would like to give.

R. K. George, B. S. Ratanpal 2
Simple Math Calculations

( i ) If you want to add two numbers say 7 & 12, type as follows

>> 7+12

and press the ENTER or return key, you see the following output:

ans =
19

Here, ans stands for the answer of computation. Similarly, the following gives product and
difference of these numbers,

>> 7*12 <ENTER>


ans =
84

>> 12-7 <ENTER>


ans =
5

( ii ) If you want to store the values 7 and 12 in MATLAB variables a & b and store the
values of their product and division in c and d, do as follows:

>> a =7 <ENTER>
a=
7

>>b =12 <ENTER>


b=
12

>>c= a*b <ENTER>


c=
84

>>d = 12/7 <ENTER>


d=
1.7143

You can exit MATLAB with the command exit or quit. A computation can be stopped with
[ctrl-c]

R. K. George, B. S. Ratanpal 3
The basic arithmetic operation are given by:

Operation Symbol Example


Addition + 7+12
a+b
Subtraction - 12-7
a-b
Multiplication * 12*7
a.b
Division / or \ 12/7 = 7\12
a/b
Exponential ^ 7^12
ab

Variables, Expressions & Statements:


Variable names must be a single word containing no space and up to 31 characters. Variables
names are case sensitive and a variable name must start with a letter. Punctuation characters
are not allowed.

MATLAB’s statements are of the form:

>> variables = expression or


>> expression

Expressions are composed of operators, function and variable names. After evaluation the
value is assigned to the variable and displayed. If the variable name and = sign are omitted, a
variable ans (for answer) is automatically created and the result is assigned to it.

A statement is normally terminated with the carriage returns. However, a statement can be
continued on the next line with three or more periods followed by a carriage return.
Several statements can be placed on a single line if separated by commas or semicolons. If
the last character of a statement is a semicolon, then values of the variable printing to the
screen will be suppressed, but the assignment is still carried out.

Rules of Precedence:

Expressions are evaluated from left to right with exponential operation having the highest
precedence, followed by multiplication and division having equal precedence, followed
by addition and subtracting having equal precedence. Parentheses can be used to alter this
ordering in which case these rules of precedence are applied within each set of parentheses
starting with the innermost set and proceeding outward.

( iii ) The most recent values assigned to the variables you used in the current session are
available. For example, if you type a at the prompt you get the output as :

>> a

a=
7

R. K. George, B. S. Ratanpal 4
If you cannot remember the names of the variables, you have used in the current session, you
can use the who command for a list of variables it has in the current session.

>> who
Your variables are
ans a b c
d

The command whos will list the variables in the workspace and their size.

The command

>> clear

will remove all current variables from the memory of the system.

>> clear a

will clear only the variable a.

( iv) To recall previous commands, MATLAB uses the cursor keys ←, ↑, →, ↓ on your
keyboard.

↑ - recalls the most recent command to the MATLAB prompt.


↓ - scrolls forward through commands.
← - moves one within a command at the MATLAB prompt.

( v ) The display of numerical values can have different format as we see below:

>> e= 1/3
e=
0.3333

>> format long (long decimal format)

>> e
e=
0.33333333333333

>> format short e (short exponential format)


>> e
e=
3.3333 e-01

>>format long e (long exponential format)


e=
3.33333333333333 e-04

R. K. George, B. S. Ratanpal 5
>>format ( default format)
>>e
e=
0.3333

( vi ) To suppress the display of output of a command on screen put semicolon ‘;’ after
the command.

>> a=3;
>>

( vii ) To end a session, type quit or exit at the MATLAB prompt.

>> exit

When we log out or exit, MATLAB will lose all the current variables from the memory. To
save the current session, type

>> save

This saves the all current variables to a binary diskfile matlab.mat. When you later re-enter
MATLAB, the command

>> load

will restore the workspace to list former state.

( viii ) Complex numbers i or j stands for −1 and pi gives the value of Π .

>> c = 1-2i

c=
1.000–2.0000 i

Some functions deals with complex numbers are as follows:

>> abs ( c )

ans =
2.2361

>> real ( c )

ans =
1

R. K. George, B. S. Ratanpal 6
>> imag ( c )

ans =
-2
>> angle ( c )

ans =
-1.1071

Information about any command or operation is available by typing:

>> help command

and to get menu of help commands type

>> help

R. K. George, B. S. Ratanpal 7
The following are some of the most commonly used functions:

trigonometric. exponential.
sin - sine. exp - exponential.
sinh - hyperbolic sine. log - natural logarithm.
asin - inverse sine. log10 - common (base 10) logarithm.
asinh - inverse hyperbolic sine. log2 - base 2 logarithm and dissect
cos - cosine. floating point number.
cosh - hyperbolic cosine. pow2 - base 2 power and scale
acos - inverse cosine. floating point number.
acosh - inverse hyperbolic cosine. sqrt - square root.
tan - tangent. nextpow2 - next higher power of 2
tanh - hyperbolic tangent. complex.
atan - inverse tangent. abs - absolute value.
atan2 - four quadrant inverse tangent. angle - phase angle.
atanh - inverse hyperbolic tangent. conj - complex conjugate.
sec - secant. imag - complex imaginary part.
sech - hyperbolic secant. real - complex real part.
asec - inverse secant. unwrap - unwrap phase angle.
asech - inverse hyperbolic secant. isreal - true for real array.
csc - cosecant. cplxpair - sort numbers into complex
csch - hyperbolic cosecant. conjugate pairs.
acsc - inverse cosecant. rounding and remainder.
acsch - inverse hyperbolic cosecant. fix - round towards zero.
cot - cotangent. floor - round towards minus infinity.
coth - hyperbolic cotangent. ceil - round towards plus infinity.
acot - inverse cotangent. round - round towards nearest integer.
acoth - inverse hyperbolic cotangent. mod - modulus (signed remainder
after division).
rem - remainder after division.
sign - signum.

3. WORKING WITH MATRICES:


MATLAB works with essentially only one kind of objects, i.e. a rectangular numerical matrix
with possibly complex entries. All variables represent matrices.

Scalers - 1 by 1 matrix
Row vector - matrix with one row
Column vector - matrix with one column.

If you want to store a matrix 1 2 3 in a variable a in the MATLAB’s current


4 5 6
7 8 9

memory, you type the following in the MATLAB prompt.

>> a = [1 2 3; 4 5 6; 7 8 9]

R. K. George, B. S. Ratanpal 8
a=
1 2 3
4 5 6
7 8 9

The rows are separated by semicolons and elements are separated by space or by comma.
That is, the above matrix can also be stored by the following command.

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

or by the statement

>> a = [
1 2 3
4 5 6
7 8 9 ];

The semicolon at the end of a command suppresses the output.


The matrix a is transposed and is stored in b by the following command

>> b = a’

b=
1 4 7
2 5 8
3 6 9

The following matrix operations are available in MATLAB

Function Task
+ Addition
- Subtraction
* Multiplication
^ Power
‘ Transpose
\ Left Division
/ Right Division

Examples:

>> a1 = a+b (matrices a and b are added and stores in a1)


a1 =

2 6 10
6 10 14
10 14 18

R. K. George, B. S. Ratanpal 9
>> b1 = a-b (b is subtracted from a and stores in b1)
b1 =

0 -2 -4
2 0 -2
4 2 0

>> c = a*b (a is multiplied with b and stores in c)

c=

14 32 50
32 77 122
50 122 194

The operations *, ^, \, / can be made to operate entry-wise by preceding them by a period .

>> [ 1 2 3 4] .* [1 2 3 4] (element-wise product)


ans =
1 4 9 16

>> [1 2 3 4] .^ 2 (element-wise power)


ans =
1 4 9 16

>> m = [ 2 1 5; 5 4 9;8 6 3];


>> n = inv(m) (Computes the inverse of the matrix a)
n=
1.1351 -0.7297 0.2973
-1.5405 0.9189 -0.1892
0.0541 0.1081 -0.0811
>> l = det(m) (Computes the determinant of a)
l=
-37

>> eig(a) (display eigen values of a)


ans =

16.1168
-1.1168
0.0000

>> [v,d]=eig(a) (gives eigen values and eigen vectors vof


a)
v=

0.2320 0.7858 0.4082


0.5253 0.0868 -0.8165
0.8187 -0.6123 0.4082

R. K. George, B. S. Ratanpal 10
d=

16.1168 0 0
0 -1.1168 0
0 0 0.0000

>> size(a) (gives size of the matrix a)


ans =

3 3

>> rank(a) (Displays rank of a)


ans =

>> clear (Clear’s All variables a, b, c, a1, b1, d)

>>clc (Clears Screen)

The following are some special matrices generated by built-in statements and functions

>> a = magic(4) (Produces Magic square of size 4)


a=

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

>> b = rand(5) (Generates Random matrix of size 5)


b=

0.9501 0.7621 0.6154 0.4057 0.0579


0.2311 0.4565 0.7919 0.9355 0.3529
0.6068 0.0185 0.9218 0.9169 0.8132
0.4860 0.8214 0.7382 0.4103 0.0099
0.8913 0.4447 0.1763 0.8936 0.1389

>> a = hilb(5)
a=

1.0000 0.5000 0.3333 0.2500 0.2000


0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250
0.2000 0.1667 0.1429 0.1250 0.1111

is the Hilbert matrix, the king of ill-conditioned matrix of order 5.

R. K. George, B. S. Ratanpal 11
Table of functions dealing with matrices

Function Task Function Task


Norm matrix or vector trace sum of diagonal
norm. elements.
normest estimate the matrix null null space.
2-norm.
rank matrix rank. orth orthogonalization.
det determinant rref reduced row echelon
form.
subspace angle between two
subspaces.

>> ones(5) (generates square matrix of order 5 with all entries 1)

ans =

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

>> zeros(6) (generates matrix with all entries zero)

ans =

0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

Matrix building functions


1. eye(n) - Identity matrix of order n
2. diag(a) - Vector consisting of diagonal of a
3. triu(a) - Upper triangular part of a
4. tril(a) - Lower triangular part of a

We can also load a matrix from an external ASCII file, say data.ext (where .ext is any
extension). If this ascii file contain a rectangular array of just the numeric matrix entries, then
to load the matrix type the command

Submatrices and Colon Notation

Consider a matrix a give by

R. K. George, B. S. Ratanpal 12
>> a = [1 2 3 4;5 6 7 1;2 3 4 5]
a=

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

>> b= a(1:2,3) (Vector consisting of the first 2 entries of the 3rd column of a)
b=

3
7

>>c = a(:,3) (Vector consisting of 3rd column of a)

c=

3
7
4

>> d = a(1:2,:) (First two rows)


d=

1 2 3 4
5 6 7 1

>> e = a(3,:) (Third row of a)

e=
2 3 4 5

>> f = a(:,[2 4]) (Columns 2 and 4)

f=

2 4
6 1
3 5

>> aa = a(1:2, 3:4) (Submatrix)

aa =

3 4
7 1

R. K. George, B. S. Ratanpal 13
Matrices can be built from blocks of matrices

>> a = [1 2 3;4 5 6;7 8 9]


>> b = [a, zeros(3,2); ones(2,3),eye(2)] ( will build a 5 by 5 matrix)

b=

1 2 3 0 0
4 5 6 0 0
7 8 9 0 0
1 1 1 1 0
1 1 1 0 1

Functions of vectors

>> t = [1:2:10] (Makes a row vector t having element starting from 1 up to 10 with step size
2)

t=

1 3 5 7 9

>> tt = [5:-1:0] (Here increment is –1)


tt =

5 4 3 2 1 0

>> x = 1:.2:2 (Here increment is not an integer)


x=

1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

>> max(t) (maximum element in the vector


t)
ans =

>> min(t) (minimum element in the vector


t)
ans =

>> sum(t) (sum of all elements in the vector t)


ans =

25

R. K. George, B. S. Ratanpal 14
>> mean(t) (mean of elements of t)
ans =

>>sort(t) (arrange in ascending order)


ans =

1 3 5 7 9

>> prod(t) (Product of elements)

ans =

945

>> median(t) (computes median)

ans =

>> any(t)

ans =

>> all(t)

ans =

>> std(t) (standard


deviation)

ans =

3.1623

Functions of Matrices & Vectors

Function Task Function Task


inv Matrix inverse svds A few singular values
cond Condition number poly Characteristic
with respect to polynomial
inversion
condest 1-norm condition polyeig Polynomial
number estimate. eigenvalue problem

R. K. George, B. S. Ratanpal 15
Function Task Function Task
chol Cholesky condeig Condition number
factorization with respect to
eigenvalues
cholinc Incomplete Cholesky hess Hessenberg form
factorization
lu LU factorization qz QZ factorization for
generalized
eigenvalues
luinc Incomplete LU schur Schur decomposition
factorization
qr Orthogonal-triangular expm Matrix exponential
decomposition
nnls Non-negative least- logm Matrix logarithm
squares
pinv Pseudoinverse sqrtm Matrix square root
lscov Least squares with funm Evaluate general
known covariance matrix function
eig Eigenvalues and qrdelete Delete column from
eigenvectors QR factorization
svd Singular value qrinsert Insert column in QR
decomposition factorization
eigs A few eigenvalues rsf2csf Real block diagonal
form to complex
diagonal form
cdf2rdf Complex diagonal balance Diagonal scaling to
form to real block improve eigenvalue
diagonal form accuracy
planerot Given's plane
rotation

4.Plotting Graphs
2-D plots :
Suppose we want to plot the graph of y = sin(x), in a interval [0,10]. Type as follows
>> x = 0:0.5:10; (generates points in the given interval)
>> y = sin(x); (calculate function values at the x points)
>> plot(x,y) (Plots x verses y)
This will display the following graph:

R. K. George, B. S. Ratanpal 16
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7 8 9 10

We can also give the title, x-label, y-label to the graph, to do this you type as follows on
MATLAB command prompt:

>> title(‘Graph Of Sine Function’);


>>xlabel(‘X Values’);
>>ylabel(‘Y=Sin(x)’);
It will display the graph as follows:

R. K. George, B. S. Ratanpal 17
Graph Of S ine Function
1

0.8

0.6

0.4

0.2
Y = S in(x )

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7 8 9 10
X V alues

More on plots

plot(x,y) plots vector y versus vector x.


If x or y is a matrix, then the vector is plotted versus the rows or columns of the
matrix, whichever line up.
plot(y) plots the columns of y versus their index.
If y is complex, plot(y) is equivalent to plot(real(y),imag(y)).
In all other uses of plot, the imaginary part is ignored. various line types, plot symbols
and colors may be obtained with plot(x,y,s) where s is a character string made from one
element from any or all the following colunms:
y yellow . point - solid m magenta
o circle : dotted c cyan x x-mark
-. dashdot r red + plus -- dashed
g green * star b blue s square
w white d diamond k black v triangle (down)
^ triangle (up) < triangle (left) > triangle (right) p pentagram
h hexagram

Example:
plot(x,y,'c+:') plots a cyan dotted line with a plus at each data point.
plot(x,y,'bd') plots blue diamond at each data point but does not draw any line.

R. K. George, B. S. Ratanpal 18
More than one plot in the same graph

>> plot(x, y, ‘b’, x, z, ‘g’)

puts two plots, plot(x, y, ‘b’) and plot(x, z, ‘g’) in one graph. The first one with blue color
and the second with green color.

Example:

>> t = linspace(0,2*pi); (line space generates 100 t points between 0 and 2Π)
>> x = sin(t);
>> y = cos(t);
>> plot(t, x,’*’, t, y,’-’) (plots sine and cos graphs in the same plot)
>> legend(‘x = sin(t)’, ’y = cos(t)’) (provides legends for graphs)
>> grid (provides grid lines)

x=sin(t)
0.8 y=cos(t)

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7

plot(x1,y1,s1,x2,y2,s2,x3,y3,s3,...) combines the plots defined by the (x,y,s) triples,


where the x's and y's are vectors or matrices and the s's are strings.
plot(x,y,'y-',x,y,'go') plots the data twice, with a solid yellow line interpolating green
circles at the data points.

Subplots

You can hold more than one set of axes on one figure window. The command
subplot(m,n,p) subdivides the current figure window into an m-by-n matrix of plotting areas
and chooses the pth area to be active.

R. K. George, B. S. Ratanpal 19
Example:

>> x = -2*pi:pi/10:2*pi;
>> y = x.^2;
>> z = sin(x);
>> y1 = cos(x);
>> z1 = exp(x);
>> subplot(2,2,1),plot(x,y)
>> grid
>> subplot(2,2,2),plot(x,z)
>> grid
>> subplot(2,2,3),plot(x,y1)
>> grid
>> subplot(2,2,4),plot(x,z1)
>>grid

It displays the graph as follows:

40 1

35

30 0.5

25

20 0

15

10 -0.5

0 -1
-10 -5 0 5 10 -10 -5 0 5 10

1 600

500
0.5
400

0 300

200
-0.5
100

-1 0
-10 -5 0 5 10 -10 -5 0 5 10

Functions for 2-D plots

Function Task Function Task


plot Linear plot hold Hold current graph
loglog Log-log scale plot axes Create axes in
arbitrary positions
semilogx Semi-log scale plot subplot Create axes in tiled
positions
semilogy Semi-log scale plot legend Graph legend
polar Polar coordinate plot title Graph title

R. K. George, B. S. Ratanpal 20
Function Task Function Task
plotyy Graphs with y tick xlabel X-axis label
labels on the left and
right
axis Control axis scaling ylabel Y-axis label
and appearance
zoom Zoom in and out on a text Text annotation
2-D plot
grid Grid lines gtext Place text with
mouse
box Axis box

3-D plots
Similar to 2-D plots, plot3 produces curves in 3-dimentional space

>> plot3(x,y,z)

produces the plot of the piecewise linear curves in 3-D space passing through the coordinates
of the respective elements of x, y and z.

Example

>> t :-20*pi:0.01:20*pi;
>> x = cos(t);
>> y = sin(t);
>> z = t.^3;
>> plot3(x, y, z)

will produce a helix which is compressed near the x-y plane:

5
x 10

2.5

1.5

0.5

-0.5

-1

-1.5

-2

-2.5
1

0.5 1
0.8
0.6
0 0.4
0.2
0
-0.2
-0.5 -0.4
-0.6
-0.8
-1 -1

We can also give the title, x-label, y-label, z-label, grid to the 3-D graphs as we are
doing in 2-D graphs.

R. K. George, B. S. Ratanpal 21
3D Mesh Plots

Using mesh command we can draw 3-dimensional wire mesh surface.

>> mesh(z)

creates a 3-dimentional plot of the elements of the matrix z. The mesh surface is defined by
the z-co-ordingates. You can plot mesh surface by the z-co-ordinates of points above a
rectangular grid in the x-y plane. It forms the mesh plot by joining adjacent points with
straight lines.

Example 1:

>> xx = -2:0.2:2;
>> yy = xx;
>> [x, y] = meshgrid(xx,yy);
>> z = x.^2+y.^2;
>> mesh (z)

The graph is as follows:

>> [x,y] = meshgrid(-2:.2:2,-2:.2:2); can be used to replace the first 3 lines given in the
above example.

R. K. George, B. S. Ratanpal 22
Example 2:

>> [x,y,z] = peaks(20); (peaks is a built-in function in MATLAB)


>> mesh (x,y,z);
>> xlabel(‘X-axis’);
>> ylabel(‘Y-axis’);
>> zlabel(‘Z-axis’);
>> title(‘Mesh plots of Peaks’);

It will display the graph as follows:

Surface plots

Surface plots look like a mesh plot, the only difference is that the spaces between the lines
are filled in. Surface plots are generated by using surf function. We plot the above graph
using surf

>> [x,y,z] = peaks(20);


>> surf (x,y,z);
>> xlabel(‘X-axis’);
>> ylabel(‘Y-axis’);
>> zlabel(‘Z-axis’);
>> title(‘Surface plots of Peaks’);

The graph is as follows

R. K. George, B. S. Ratanpal 23
Functions for 3-D plots

Function Task Function Task


plot3 Plot lines and points mesh 3-D mesh surface
in 3-D space
surf 3-D colored surface fill3 Filled 3-D polygons
colormap Color look-up table caxis Pseudocolor axis
scaling
shading Color shading mode hidden Mesh hidden line
removal mode
brighten Brighten or darken surfl 3-D shaded surface
color map with lighting
lighting Lighting mode material Material reflectance
mode
specular Specular reflectance diffuse Diffuse reflectance
surfnorm Surface normals hsv Hue-saturation-value
color map
hot Black-red-yellow- gray Linear gray-scale
white color map color map
bone Gray-scale with tinge copper Linear copper-tone
of blue color map color map
pink Pastel shades of pink white All white color map
color map

R. K. George, B. S. Ratanpal 24
Function Task Function Task
flag Alternating red, lines Color map with the
white, blue, and line colors
black color map
colorcube Enhanced color-cube jet Variant of HSV
color map
prism Prism color map cool Shades of cyan and
magenta color map
autumn Shades of red and spring Shades of magenta
yellow color map and yellow color map
winter Shades of blue and summer Shades of green and
green color map yellow color map
axis Control axis scaling zoom Zoom in and out on a
and appearance 2-D plot
grid Grid lines box Axis box
hold Hold current graph axes Create axes in
arbitrary positions
subplot Create axes in tiled view 3-D graph viewpoint
positions specification
viewmtx View transformation rotate3d Interactively rotate
matrix view of 3-D plot
title Graph title xlabel X-axis label
ylabel Y-axis label zlabel Z-axis label
colorbar Display color bar text Text annotation
(color scale)
gtext Mouse placement of
text

MATLAB Programming
We can also do programming in MATLAB as we are doing in FORTRAN, C & C++. To
make a file in MATLAB we have to click on “New” in the file menu in menubar. It will open
a new file as we are doing in “word”; and if we save this file (called m-file), will be saved in
“bin” folder of MATLAB.
Such files are called “M-files” because they have an extension of “.m” in its filename. Much
of your work with MATLAB will be creating and refining M-files.

There are two types of M-files: Script Files and Function Files

Script Files

A script file consists of a sequence of normal MATLAB statements. If the file has the
filename, say, rkg.m, then the MATLAB command >> rkg will cause the statements in the
file to be executed. Variables in a script file are global and will change the value of variables
of the same name in the environment of the current MATLAB session.

Script files are often used to enter data into a large matrix; in such a file, entry errors
can be easily edited out.

R. K. George, B. S. Ratanpal 25
Example: In a file rkg.m enter the following:
% This is a sample m-file
a = [1,2,3;0,1,1;1,2,3]
b =a’;
c = a+b
d = inv(c)
save this file. Then to execute this file, type

>> rkg <ENTER>

a=

1 2 3
0 1 1
1 2 3

b=

1 0 1
2 1 2
3 1 3

c=

2 2 4
2 2 3
4 3 6

d=

-1.5000 0 1.0000
0 2.0000 -1.0000
1.0000 -1.0000 0

The % symbol indicates that the rest of the line is a comments. MATLAB will ignore the rest
of the line. However, the first comment lines which document the m-file are available to the
on-line help facility and will be displayed

A M-file can also reference other M-files, including referencing itself recursively.

Function Files

Function files provide extensibility to MATLAB. You can create new functions
specific to your problem which will then have the same status as other MATLAB functions.
Variables in a function file are by default local. However, you can declare a variable to be
global if you wish.

R. K. George, B. S. Ratanpal 26
Example

function y = prod (a,b)


y = a*b;

Save this file with filename prod.m then type on the MATLAB prompt
>> prod (3,4)
ans =
12

In MATLAB to get input from user the syntax rule is :

variable name = input (‘variable’);

As we know that if we don’t write “;” after a statement in MATLAB, it will print the
output also. That means if in a programme we write:
a=input (‘ Enter a number ‘);
And on command prompt if we run this program it will be displayed like:

>> Enter a number


If we type 2 at the cursor then we get the output as
a=2

Control Flow

MATLAB offers the following decision making or control flow structures:


1. If- Else –End Construction
2. For loops
3. While loops
4. Switch-Case constructions etc.

SYNTAX RULE FOR CONTROLLING THE FLOW:

1) if statement condition:

The general form of the if statement is:

if expression
statements
elseif expression
statements
else
statements
end
The statements are executed if the real part of the expression has all non-zero elements.
The else and elseif parts are optional. zero or more elseif parts can be used as well as nested
if's. The expression is usually of the form
expr rop expr
where rop is ==, <, >, <=, >=, or ~=.

R. K. George, B. S. Ratanpal 27
Example:
if i == j
a(i,j) = 2;
elseif abs(i-j) == 1
a(i,j) = -1;
else

2) else used with if:


else is used with if. The statements after the else are executed if all the preceeding if and
elseif expressions are false.
The general form of the if statement is:
if expression
statements
elseif expression
statements
else
statements
end

3) elseif if statement condition:


elseif is used with if. The statements after the elseif are executed if the expression is true
and all the preceeding if and elseif expressions are false. An expression is considered true if
the real part has all non-zero elements. elseif does not need a matching end, while else if
does.
the general form of the if statement is:
if expression
statements
elseif expression
statements
else
statements
end

4) end terminate scope of for, while, switch, try, and if statements. Without end's, for, while,
switch, try, and if wait for further input. each end is paired with the closest previous unpaired
for, while, switch, try or if and serves to terminate its scope. end can also serve as the last
index in an indexing expression. in that context,
end = size(x,k) when used as part of the k-th index. examples of this use are, x(3:end) and
x(1,1:2:end-1). when using end to grow an array, as in x(end+1) = 5, make sure x exists first.

5) for repeat statements a specific number of times:


The general form of a for statement is:
for variable = expr, statement, ..., statement
end
The columns of the expression are stored one at a time in the variable and then the
following statements, up to the
end, are executed. The expression is often of the form x:y, in which case its columns are
simply scalars. some examples

R. K. George, B. S. Ratanpal 28
Example: (assume n has already been assigned a value)

for i = 1:n,
for j = 1:n,
a(i,j) = 1/(i+j-1);
end
end
for s = 1.0: -0.1: 0.0, end steps s with increments of -0.1
for e = eye(n), ... end sets e to the unit n-vectors.

Long loops are more memory efficient when the colon expression appears in the for
statement since the index vector is never created.

6) The break statement can be used to terminate the loop prematurely. break terminate
execution of while or for loop. In nested loops, break exits from the innermost loop only.

7) while repeat statements an indefinite number of times.


The general form of a while statement is:

while expression
statements
end

The statements are executed while the real part of the expression has all non-zero elements.
The expression is usually the result of expr rop expr where rop is ==, <, >, <=, >=, or ~=.

Example:
(assuming a already defined)
e = 0*a; f = e + eye(size(e)); n = 1;
while norm(e+f-e,1) > 0,
e = e + f;
f = a*f/n;
n = n + 1;
end

8) switch switches among several cases based on expression:


the general form of the switch statement is:
switch switch_expr
case case_expr,
statement, ..., statement
case {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
otherwise,
statement, ..., statement
end

The first case where the switch_expr matches the case_expr is executed. when the case
expression is a cell array (as in the second case above), the case_expr matches if any of the

R. K. George, B. S. Ratanpal 29
elements of the cell array match the switch expression. If none of the case expressions match
the switch expression then the otherwise case is executed (if it exists). Only one case is
executed and execution resumes with the statement after the end. the switch_expr can be a
scalar or a string. A scalar switch_expr matches a case_expr if switch_expr==case_expr. A
string switch_expr matches a case_expr if strcmp(switch_expr,case_expr) returns 1 (true).

Example:
(assuming method exists as a string variable):
switch lower(method)
case {'linear','bilinear'}, disp('method is linear')
case 'cubic', disp('method is cubic')
case 'nearest', disp('method is nearest')
otherwise, disp('unknown method.')
end

9) case switch statement case:

case is part of the switch statement syntax, whose general form is:

switch switch_expr
case case_expr,
statement, ..., statement
case {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
otherwise,
statement, ..., statement
end

10) otherwise default switch statement case.

otherwise is part of the switch statement syntax, whose general form is:

switch switch_expr
case case_expr,
statement, ..., statement
case {case_expr1, case_expr2, case_expr3,...}
statement, ..., statement
...
otherwise,
statement, ..., statement
end

The otherwise part is executed only if none of the preceeding case expressions match the
switch expression.

R. K. George, B. S. Ratanpal 30
11) try begin try block:

The general form of a try statement is:

try, statement, ..., statement, catch, statement, ..., statement end

Normally, only the statements between the try and catch are executed. however, if an error
occurs while executing any of the statements, the error is captured into lasterr and the
statements between the catch and end are executed. if an error occurs within the catch
statements, execution will stop unless caught by another try...catch block. The error string
produced by a failed try block can be obtained with lasterr.

12) catch begin catch block:

The general form of a try statement is:

try statement, ..., statement, catch statement, ..., statement end

13) return returns to invoking function:

return causes a return to the invoking function or to the keyboard.


it also terminates the keyboard mode.

normally functions return when the end of the function is reached.


a return statement can be used to force an early return.

Example:

function d = det(a)
if isempty(a)
d = 1;
return
else
...
end

How to run a program in MATLAB?

Suppose we have created a m-file & saved. Now to run this program, on command prompt
type the file name and just press the ENTER KEY that will run the file.

Data File:

Now to make a data file in MATLAB, we just make a file in which all the data are stored.
Now we make another file in which the operation on that data is to be done. Then in this file,
where we have to call that data we have to just type the file name of the file in which data is
stored and write the rest of the programming statements. So when run this file the file in
which data is stored will be called and then rest of the programming statements are executed
& finally we get the output.

R. K. George, B. S. Ratanpal 31
MEX-Files:

We can call our C programs from MATLAB as if they were built in functions. Those
programs in C which are callable in MATLAB are referred as MEX-Files. MEX-files are
dynamically linked subroutines that the MATLAB interpreter can automatically load &
execute. For example the following program in C to add two integers having file name “add”.

#include<stdio.h>
main( )
{ int a=2,b=3;
d=a+b;
printf(‘sum is:’,d);
return 0;
}
To compile & link this example at the MATLAB prompt, type
>>mex add.c
and press the “ENTER”key, it will give the output.
Some useful commands for programming:
>> echo on --- Echoing of commands in all script files
>> echo off --- Turns off echo
>> echo on all --- turns on of command including function files
>> disp(‘Any string’) --- Displays the string
>> diary file --- Causes copy of all subsequent keyboard input and most
of the resulting output (but not graphs) to be written on
the named file.
>> pause --- causes to stop execution of until any key is pressed.

Some Examples:
1) Example for if, else

for i = 1:n
for j = 1:n
if i==j
a(i, j) = 2
elseif abs(i – j) ==1
a(i, j) = -1;
else
a(i, j) = 0;
end
end
end

2) Example for while

eps = 1
while (1+eps)>1
eps = eps/2;
end
eps = eps*2

R. K. George, B. S. Ratanpal 32
3) Gauss Elimination Method

function [x] = gausselim(A,b)


% This subroutine will perform Gaussian elimination on the matrix you pass and solve
% the system AX = b
N = max(size(A))
for j = 2:N
for i = j:N
m = A(j,j-1) / A(j-1,j-1);
A(i, :) = A(i, :) – A(j-1,:)*m;
b(i) = b(i) – m*b(j-1);
end
end

%Perform back substitution


x = zeros(N, 1)
x(N) = b(N) / A(N, N)
for j = N-1:-1:1
x(j) = (b(j)-A(j,j+1:N)) / A(j, j)
end

RELATIONAL OPERATORS

MATLAB relational operators includes the following:


Relational Description
Operator
< Less than
<= Less than or equal to
> Greater than
>= Greater than or equal to
== Equal to
~= Not equal to

MATLAB relational operators can be used to compare two arrays of the same size, or
to compare an array to a scalar. When we compare an array to a scalar, scalar expansion is
used to compare the scalar to each array element and the result has the same size as the array.

NOTE: = and == mean two different things:


== compares two variables and returns ones where they are equal and zeros where they
are not; while, = is used to assign the output of an operation to a variables.

Example:

>> a = 1:0.5:10;
>> b = 5:0.5:14;
>> c = a > 5

R. K. George, B. S. Ratanpal 33
c=

Columns 1 through 12

0 0 0 0 0 0 0 0 0 1 1 1

Columns 13 through 19

1 1 1 1 1 1 1

>> d = (a ==b)
d=

Columns 1 through 12

0 0 0 0 0 0 0 0 0 0 0 0

Columns 13 through 19

0 0 0 0 0 0 0

LOGICAL OPERATORS

MATLAB logical operators include the following:

Logical Operator Description


& AND
| OR
~ NOT

Example:

>> a = 1:15;
>> b = ~ ( a < 5 )
b=

Columns 1 through 12

0 0 0 0 1 1 1 1 1 1 1 1

Columns 13 through 15

1 1 1

>> c = ( a > 2 ) & (a < 8 )

R. K. George, B. S. Ratanpal 34
c=

Columns 1 through 12

0 0 1 1 1 1 1 0 0 0 0 0

Columns 13 through 15

0 0 0

>> d = ( a > 2 ) | ( a < 8 )


d=

Columns 1 through 12

1 1 1 1 1 1 1 1 1 1 1 1

Columns 13 through 15

1 1 1

R. K. George, B. S. Ratanpal 35

You might also like