Post on 14-Apr-2018
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
1/53
4
www.thinnkware.com
Introduction to MATLAB
What is MATLAB?
MATLAB is a package that has been purpose-designed to make computations easy, fast and
reliable. It is installed on machines run by Bath University Computing Services (BUCS), which
can be accessed in the BUCS PC Labs such as those in 1 East 3.9, 1 West 2.25 or 3 East 3.1, as
well as from any of the PCs in the Library. The machines which you will use for running
MATLAB are SUN computers that run on the UNIX operating system. (If you are a PC or Mac
fan, note that this is a quite deferent environment from what you are used to. However you will
need only a small number of UNIX commands when you are working with MATLAB. MATLAB
started life in the 1970s as a user-friendly interface to certain clever but complicated programs for
solving large systems of equations. The idea behind MATLAB was to provide a simple way of
using these programs that hid many of the complications. The idea was appealing to scientists who
needed to use high performance software but had neither the time nor the inclination (nor in some
cases the ability) to write it from scratch. Since its introduction, MATLAB has expanded to cover
a very wide range of applications and can now be used as a very simple and transparent
programming language where each line of code looks very much like the mathematical statementit is designed to implement. Basic MATLAB is good for the following.Computations, including
linear algebra, data analysis, signal processing, polynomials and interpolation, numerical
integration (quadrature), and numerical solution of deferential equations. Graphics, in 2-D and 3-
D, including colour, lighting, and animation.
It also has collections of specialised functions, called toolboxes, that extend its functionality. In
particular, it can do symbolic algebra, e.g. it can tell you that (x+y)^2 is equal to x^2+2*x*y+y^2.
It is important not to confuse the type of programming that we shall do in this course with
fundamental programming in an established high-level language like C, JAVA or FORTRAN. In
this course we will take advantage of many of the built-in features of MATLAB to do quite
complicated tasks but, in contrast to programming in a conventional high-level language, we shall
have relatively little control over exactly how the instructions which we write are carried out on
the machine. As a result, MATLAB programs for complicated tasks may be somewhat slower torun than programs written in languages such as C. However the MATLAB programs are very easy
to write, a fact which we shall emphasise here. We shall use MATLAB as a vehicle for learning
elementary programming skills and applications. These are skills which will be useful
independently of the language you choose to work in. Some students in First Year will already
know some of these skills, but we shall not assume any prior knowledge
Scope of MATLAB:
Aerospace and Defense
Automotive
Biotech, Medical, and Pharmaceutical
Chemical and Petroleum
Communications
Computers and Office Equipment
Education
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
2/53
5
www.thinnkware.com
Electronics and Semiconductor
Financial Services
Industrial Equipment and Machinery
Instrumentation
Utilities and Energy
Starting MATLAB
On the Windows desktop, the installer usually creates a shortcut icon for starting MATLAB;
double-clicking on this icon opens MATLAB desktop.
The MATLAB desktop is an integrated development environment for working with MATLABsuite of toolboxes, directories, and programs. We see in Fig. 1.1 that there are four panels, which
represent:
1. Command Window 2.Current Directory 3.Workspace 4.Command HistoryA particular window can be activated by clicking anywhere inside its borders.
Fig. 1.1MATLAB Desktop (version 7.0, release 14)
Desktop layout can be changed by following Desktop --> Desktop Layout from the main menu
as shown in Fig. 1.2 (Default option gives Fig. 1.1).
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
3/53
6
www.thinnkware.com
Fig. 1.2 Changing Desktop Layout to History and Command Window option
Command Window
We type all our commands in this window at the prompt ( >> ) and press return to see the
results of our operations. Type the command ver on the command prompt to get information
about MATLAB version, license number, operating system on which MATLAB is running,
JAVA support version, and all installed toolboxes. If MATLAB don't regard to your speed of
reading and flush the entire output at once, just type more onbefore supplying command to see
one screen of output at a time. Clicking the What's Newbutton located on the desktop shortcuts
toolbar, opens the release notes for release 14 of MATLAB in Help window. These general
release notes give you a quick overview of what products have been updated for Release 14.
Working with Command Window allows the user to use MATLAB as a versatile scientific
calculator for doing online quick computing. Input information to be processed by the MATLAB
commands can be entered in the form of numbers and arrays.
As an example of a simple interactive calculation, suppose that you want to calculate the torque (
T) acting on 0.1 kg mass ( m ) at swing of the pendulum of length ( l) 0.2 m. For small
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
4/53
7
www.thinnkware.com
values of swing, Tis given by the formula . This can be done in the MATLAB command
window by typing:
>> torque = 0.1*9.8*0.2*pi/6
MATLAB responds to this command by:
torque =
0.1026
MATLAB calculates and stores the answer in a variable torque (in fact, a array) as soon as
the Enter key is pressed. The variable torque can be used in further calculations. is predefinedin MATLAB; so we can just use pi without declaring it to be 3.14.Command window
indicating these operations is shown in Fig. 1.3.
Fig. 1.3 Command Window for quick scientific calculations ( text in colored boxes corresponds to
explanatory notes ).
If any statement is followed by a semicolon,
>> m = 0.1;
>> l = 0.2;
>> g = 9.8;
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
5/53
8
www.thinnkware.com
the display of the result is suppressed. The assignment of the variable has been carried out even
though the display is suppressed by the semicolon. To view the assignment of a variable, simply
type the variable name and hit Enter. For example:
>> torque=m*g*l*pi/6;
>> torque
torque =
0.1026
It is often the case that your MATLAB sessions will include intermediate calculations whose
display is of little interest. Output display management has the added benefit of increasing the
execution speed of the calculations, since displaying screen output takes time.
Variable names begin with a letter and are followed by any number of letters or numbers
(including underscore). Keep the name length to 31 characters, since MATLAB remembers only
the first 31 characters. Generally we do not use extremely long variable names even though they
may be legal MATLAB names. Since MATLAB is case sensitive, the variables Aand aare
different.
When a statement being entered is too long for one line, use three periods, , followed by to
indicate that the statement continues on the next line.
>> x=3-4*j+10/pi+5.678+7.890+2^2-1.89
>> x=3-4*j+10/pi+5.678...
+7.890+2^2-1.89
+ addition, subtraction, * multiplication, / division, and ^ power are usual arithmetic operators.
The basic MATLAB trigonometric commands are sin, cos, tan, cot, sec and csc. The inverses
, etc., are calculated by asin, acos, etc. The same is true for hyperbolic
functions. Variablesj = and i = are predefined in MATLAB and are used to representcomplex numbers.
MATLAB representation of complex number :
or
The later case is always interpreted as a complex number, whereas, the former case is a complex
number in MATLAB only ifj has not been assigned any prior local value.
MATLAB representation of complex number :
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
6/53
9
www.thinnkware.com
or
or
In Cartesian form, arithmetic additions on complex numbers are as simple as with real numbers.
Consider two complex numbers and . Their sum is given
by
For example, two complex numbers and can be added in MATLAB as:
>> z1=3+4j;
>> z2=1.8+2j;
>> z=z1+z2
z =
4.8000 + 6.0000i
Multiplication of two or more complex numbers is easier in polar/complex exponential form. Two
complex numbers with radial lengths and are given with angles and
rad. We change to radians to give rad= rad. The complex
exponential form of their product is given by
This can be done in MATLAB by:
>> theta1=(35/180)*pi;
>> z1=2*exp(theta1*j);
>> z2=2.5*exp(0.25*pi*j);
>> z=z1*z2
z =
0.8682 - 4.9240j
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
7/53
10
www.thinnkware.com
Magnitude and phase of a complex number can be calculated in MATLAB by commands abs and
angle. The following MATLAB session shows the magnitude and phase calculation of complex
numbers and .
>> abs(5*exp(0.19*pi*j))
ans =
5
>> angle(5*exp(0.19*pi*j))
ans =
0.5969
>> abs(1/(2+sqrt(3)*j))
ans =
0.3780
>> angle(1/(2+sqrt(3)*j))
ans =
-0.7137
The mathematical quantities and are calculated with exp(x), log10(x), and
log(x), respectively.
All computations in MATLAB are performed in double precision . The screen output can be
displayed in several formats. The default output format contains four digits past the decimal point
for nonintegers. This can be changed by using the format command. Remember that the format
command affects only how numbers are displayed, not how MATLAB computes or saves them.
See how MATLAB prints in different formats.
Format command at MATLAB prompt Display format
format short 31.4159
format short e 3.1416e+001
format long 31.41592653589793
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
8/53
11
www.thinnkware.com
format long e 3.141592653589793e+001
format short g 31.416
format long g 31.4159265358979
format bank 31.42
The following exercise will enable the readers to quickly write various mathematical formulas,
interpreting error messages, and syntax related issues.
Exercise M1.1
i. By using arbitrary values of , check that .
ii. Verify with a few arbitrary values of that.
iii. Verify with a few arbitrary values of that
.
iv. Fort=0, 2, 5, 7, 12 and 25, find the value of the function.
Exercise M1.2
1. Try entering complex number in MATLAB as 3+j4 andcheck the answer. Initialize and then enter3+4j, 3+j*4, and
3+4*j and check the various answers. Interpret messages given by
MATLAB.
2. Calculate magnitude and phase of the following complex numbers
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
9/53
12
www.thinnkware.com
for using MATLAB.
a.
b. .
3. Use MATLAB to calculate the magnitude and phase offor
Exercise M1.3
1. Calculate the quantity for .2. Calculate for .
Note: Inf, and NaN are predefined in MATLAB. NaN stands for Not-a-
Number and results from undefined operations like 0/0. Infrepresents
.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
10/53
13
www.thinnkware.com
Current Directory Window
This window (Fig. 1.4) shows the directory, and files within the directory which are in use
currently in MATLAB session to run or save our program or data. The default directory isC:\MATLAB7\work'. We can change this directory to the desired one by clicking on the square
browser button near the pull-down window.
Fig. 1.4 Current directory window
One can also use command line options to deal with directory and file related issues. Some usefulcommands are shown in Table 1.1.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
11/53
14
www.thinnkware.com
Command Usage
cd, pwd To see the current directory
cd .. To go one directory back from the current directory
cd \ To go back to the root directory
cd dir_name To change to the directory named dir_namels ordir To see the list of files and subdirectories within the current directory
whatLists MATLAB-specific files in the directory. MATLAB specific files
are with the extensions .m, .mat, .mdl, .mex, and .p.
mkdir
(parentdir,dir_name)
mkdir dir_name
Makes new directory with the name dir_name in the parent directory
specified byparentdir.
When supplied with only dir_name, it creates new directory within the
current directory
delete file_name
delete *.m
Deletes file from the current directory.
Deletes all m-files from the current directory.
MATLAB desktop snapshot showing selected commands from Table 1.1 are shown in Fig. 1.5.
Workspace
Workspace window shows the name, size, bytes occupied, and class of any variable defined in the
MATLAB environment. For example in Fig.1.6, b' is 1 X 4 size array of data type double and
thus occupies 32 bytes of memory. Double-clicking on the name of the variable opens the array
editor (Fig. 1.7). We can change the format of the data (e.g., from integer to floating point), size of
the array (for example, for variable A, from 3 X 4 array to 4 X 4 array) and can also modify thecontents of the array.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
12/53
15
www.thinnkware.com
Fig. 1.5Example directory related commands
If we right-click on the name of a variable, a menu pops up, which shows various operations for
the selected variable, such as: open the array editor, save selected variable for future usage, copy,
duplicate, and delete the variable, rename the variable, editing the variable, and various plotting
options for the selected variable.
Fig. 1.6Entries in the Workspace
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
13/53
16
www.thinnkware.com
Fig. 1.7Array editor window
Workspace related commands are listed in Table 1.2.
Table 1.2
Command Usage
who Lists variables currently in the workspace
whos Lists more information about each variable including size, bytes stored in thecomputer, and class type of the variables
clear Clears the workspace. All variables are removed
clear all
Removes all variables and functions from the workspace. This can also be done
by selectingEditfrom the main menu bar and then clicking the option Clear
Workspace.
clear var1
var2Removes only var1 and var2 from the workspace.
For example, see the following MATLAB session for the use ofwho and whos commands.
>> who
Your variables are:
A b
>> whos
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
14/53
17
www.thinnkware.com
Name Size Bytes Class
A 3x4 96double
array
b 1x4 32double
array
Grand total is 16 elements using 128 bytes
Command History Window
This window (Fig. 1.8) contains a record of all the commands that we type in the command
window. By double-clicking on any command, we can execute it again. It stores commands from
one MATLAB session to another, hierarchically arranged in date and time. Commands remain in
the list until they are deleted.
Fig. 1.8 Command history window
Commands can also be recalled with the up-arrow key. This helps in editing previous
commands.
Selecting one or more commands and right-clicking them, pops up a menu, allowing users to
perform various operations such as copy, evaluate, or delete, on the selected set of commands. For
example, two commands are being deleted in Fig. 1.9.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
15/53
18
www.thinnkware.com
Getting Help
MATLAB provides hundreds of built-in functions covering various scientific and
engineering computations. With numerous built-in functions, it is important to know how
to look for functions and how to learn to use them.
For those who want to look around and get a feel for the MATLAB computingenvironment by clicking and navigating through what catches their attention, a window-
based help is a good option. To activate the Help window, type helpwinorhelpdeskon
command prompt or start the Help Browser (Fig. 1.10) by clicking the icon from the
desktop toolbar.
Fig. 1.9 Command history window with two commands being deleted
If you know the exact name of a command, type help commandnameto get detailed task-orientedhelp. For example, type help helpwinin the command window to get the help on the command
helpwin.
If you don't know the exact command, but (atleast !) know the keyword related to the task you
want to perform, the lookforcommand may assist you in tracking the exact command. The help
command searches for an exact command name matching the keyword, whereas the lookfor
command searches for quick summary information in each command related to the keyword. For
example, suppose that you were looking for a command to take the inverse of a matrix. MATLAB
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
16/53
19
www.thinnkware.com
does not have a command named inverse; so the command help inversewill not work. In your
MATLAB command window try typing lookfor inverseto see the various commands available
for the keyword inverse.
MATLAB has a wonderful demonstration program that shows its various features through
interactive graphical user interface. Type demoat the MATLAB prompt to invoke the
demonstration program (Fig. 1.11) and the program will guide you throughout the tutorials.
Fig. 1.10Help browser
Fig. 1.11Demonstration Window
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
17/53
20
www.thinnkware.com
Elementary Matrices:
Basic data element of MATLAB is a matrix that does not require dimensioning. To create the
matrix variable in MATLAB workspace, type
the statement (note that any operation that assigns a value to a variable, creates the variable, or
overwrites its current value if it already exists).
>> A=[8 1 6 2;3 5 7 4;4 9 2 6]
The blank spaces (or commas) around the elements of the matrix rows separate the
elements. Semicolons separate the rows. For the above statement, MATLAB
responds with the display
A =
8 1 6 2
3 5 7 4
4 9 2 6
Vectors are special class of matrices with a single row or column. To create a
column vector variable in MATLAB workspace, type the statement
>> b=[1; 1; 2; 3]
b =
1
1
2
3
To enter a row vector, separate the elements by a space or comma ' , '. For example:
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
18/53
21
www.thinnkware.com
>> b=[1,1,2,3]
b =
1 1 2 3
We can determine the size of the matrices (number of rows, number of columns) by
using the size command.
>> size(A)
ans =
3 4
The command size, when used with the scalar option, returns the length of the
dimension specified by the scalar. For example, size (A,1) returns the number of
rows ofA and size(A,2) returns the number of columns ofA.
>> size(A,1)
ans =
3
>> size(A,2)
ans =
4
For matrices, the length command returns either number of rows or number of
columns, whichever is larger. For example,
>> length(A)
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
19/53
22
www.thinnkware.com
ans =
4
For vectors, length command can be used to determine its number of elements.
>> length(b)
ans =
4
The use of colon ( : ) operator plays an important role in MATLAB. This operator
may be used to generate a row vector containing the numbers from a given starting
value xi, to the final value xf, with a specified increment dx, e.g., x=[xi:dx:xf]
>> x=[0:0.1:1]
x =
Columns 1 through 7
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000
Columns 8 through 11
0.7000 0.8000 0.9000 1.0000
By default, the increment is taken as unity.
To generate linearly equally spaced samples betweenx1 andx2, use the command
linspace(x1,x2) . By default, 100 samples will be generated. The command linspace
(x1,x2, N) allows the control over number of samples to be generated. See the
example below.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
20/53
23
www.thinnkware.com
>> x=linspace(0,1,11)
x =
Columns 1 through 6
0 0.1000 0.2000 0.3000 0.4000 0.5000
Columns 7 through 11
0.6000 0.7000 0.8000 0.9000 1.0000
Learn how to generate logarithmically spaced vector using the command logspace .
The colon operator can also be used to subscript matrices. For example, A(:,j) is the
jth
column ofA, and A(i,:) is the ith
row ofA. Observe the following MATLAB
session.
>> A=[8 1 6 2;3 5 7 4;4 9 2 6];
>> A(2,:)
ans =
3 5 7 4
>> A(3,2:4)
ans =
9 2 6
>> A(1,3)
ans =
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
21/53
24
www.thinnkware.com
6
>> B=A(1:3,2:3)
B =
1 6
5 7
9 2
>> A(:,3)=[ ]
A =
8 1 2
3 5 4
4 9 6
Manipulating matrices is almost as easy as creating them. Try the following
operations:
>> A+3
>> A-3
>> A*3
>> A/3
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
22/53
25
www.thinnkware.com
When you add/subtract/multiply/divide a vector/matrix by a number (or by a
variable with a number assigned to it), MATLAB assumes that all elements of
vector/matrix should be individually operated on.
Table 1.3 provides the list of basic operations on any two arbitrary matrices A and B
and their dimensional requirements.
Table 1.3Basic matrix operations
Operation Operator Example Notes
Plus + A+B Must be of same dimensions
Minus - A-B Must be of same dimensions
Multiply * A*B Must be of compatible dimensions
Multiply (element-by-
element).* A.*B
Must be of same dimensions; multiplies element
aij with element bij
Divide (element-by-
element)./ A./B
Must be of same dimensions; divides element aij
by element bij
Divide (element-by-
element).\ A.\B
Must be of same dimensions; divides element bij
by element aij
Matrix power ^ A^k k must be a constant, A must be a square matrixMatrix power (element-by-
element).^ A.^k
k is a constant, A can be of any dimensions;
gives (aij)k
Exercise 1.4
Consider three matrices A, B, and C given below. Perform the following operations:
A+B, B-C, A*C, A.*B, A./C, A.\B, A./B, (B*C)^3, and C.^3. Countercheck MATLAB
answers manually. Try to interpret errors, if any.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
23/53
26
www.thinnkware.com
Exercise 1.5
Create a vectort with 10 elements 1,2,.,10. Calculate for and ,
where .
Exercise 1.6
Create a vectort with initial time and final time with an interval of 0.05.
Calculate
i.ii.
M-file Editor:Type edit on MATLAB prompt and hit enter (or follow File New M-Fileoption from the
main menu bar or click on icon in main toolbar). An Editor/Debugger window will open.
This is where you write, edit, create, can run from, and save your own programs (user created
script files with sequences of MATLAB commands) in files calledM-files . An exampleM-file is
shown in Fig. M1.19.
Create the same file in your MATLAB editor and then use the option File Save orFile Save
As to save the file with the name decayed_sin.m in current working directory. You can save all
files into your personalized directory. If your personal directory is immediately below the
directory in which the MATLAB application program is installed ( e.g. , c:\MATLAB7p0), then
all user written files are automatically accessible to MATLAB. If you want to store files
somewhere else, then you need to specify the path to the files using the path or addpath
command, or change the current working directory to the desired directory before you run the
program. For example, your script file is in the directory my_dir, which is not the current working
directory of the MATLAB. If the location ofmy_diris ? c:\docume~1\control\ my_dir', it can be
included in the MATLAB search path by:
>> path(path, ?c:\docume~1\control\my_dir'); or
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
24/53
27
www.thinnkware.com
>> addpath ?c:\docume~1\control\my_dir';
to remove specified directory from the MATLAB search path, use the command rmpath . Learn
more about MATLAB search path through online help.
Type simply the name of the file decayed_sin to execute it from the command window. Script can
also be saved and executed simultaneously by clicking the icon in the main toolbar.
To open the existingM-file from the MATLAB command window, type editfilename (or follow
File Open option from the main menu bar or click on icon in the main toolbar).
All variables created during the runtime of the script file are left in the workspace. Using who or
whos , you can get information about them, and also access them by workspace window
Fig. 2.1Example M-file
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
25/53
28
www.thinnkware.com
Scripts and Functions:
Overview
The MATLAB product provides a powerful programming language, as well as an interactive
computational environment. You can enter commands from the language one at a time at the
MATLAB command line, or you can write a series of commands to a file that you then execute as
you would any MATLAB function. Use the MATLAB Editor or any other text editor to create
your own function files. Call these functions as you would any other MATLAB function or
command.
There are two kinds of program files:
Scripts, which do not accept input arguments or return output arguments. They operate ondata in the workspace.
Functions, which can accept input arguments and return output arguments. Internalvariables are local to the function.
If you are a new MATLAB programmer, just create the program files that you want to try out in
the current folder. As you develop more of your own files, you will want to organize them into
other folders and personal toolboxes that you can add to your MATLAB search path.
If you duplicate function names, MATLAB executes the one that occurs first in the search path.
To view the contents of a program file, for example, myfunction.m, usetype myfunction
Scripts
When you invoke ascript, MATLAB simply executes the commands found in the file. Scripts can
operate on existing data in the workspace, or they can create new data on which to operate.
Although scripts do not return output arguments, any variables that they create remain in the
workspace, to be used in subsequent computations. In addition, scripts can produce graphical
output using functions like plot.
For example, create a file called magicrank.m that contains these MATLAB commands:
% Investigate the rank of magic squares
r = zeros(1,32);
for n = 3:32
r(n) = rank(magic(n));end
r
bar(r)
Typing the statement
magicrank
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
26/53
29
www.thinnkware.com
causes MATLAB to execute the commands, compute the rank of the first 30 magic squares, and
plot a bar graph of the result. After execution of the file is complete, the variables n and rremain
in the workspace.
Functions
Functions are files that can accept input arguments and return output arguments. The names of the
file and of the function should be the same. Functions operate on variables within their own
workspace, separate from the workspace you access at the MATLAB command prompt.
A good example is provided by rank. The file rank.m is available in the folder
toolbox/matlab/matfun
You can see the file with
type rank
Here is the file:
function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin==1
tol = max(size(A)') * max(s) * eps;
end
r = sum(s > tol);
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
27/53
30
www.thinnkware.com
The first line of a function starts with the keyword function It gives the function name and order
of arguments. In this case, there are up to two input arguments and one output argument.
The next several lines, up to the first blank or executable line, are comment lines that provide the
help text. These lines are printed when you type
help rank
The first line of the help text is the H1 line, which MATLAB displays when you use the lookfor
command or request help on a folder.
The rest of the file is the executable MATLAB code defining the function. The variable s
introduced in the body of the function, as well as the variables on the first line, r, A and tol, are all
localto the function; they are separate from any variables in the MATLAB workspace.
This example illustrates one aspect of MATLAB functions that is not ordinarily found in other
programming languagesa variable number of arguments. The rank function can be used in
several different ways:
rank(A)
r = rank(A)
r = rank(A,1.e-6)
Many functions work this way. If no output argument is supplied, the result is stored in ans. If the
second input argument is not supplied, the function computes a default value. Within the body of
the function, two quantities named nargin and nargout are available that tell you the number of
input and output arguments involved in each particular use of the function. The rankfunction uses
nargin, but does not need to use nargout.
Types of Functions
MATLAB offers several different types of functions to use in your programming.
Anonymous Functions
An anonymous function is a simple form of the MATLAB function that is defined within a single
MATLAB statement. It consists of a single MATLAB expression and any number of input and
output arguments. You can define an anonymous function right at the MATLAB command line,
or within a function or script. This gives you a quick means of creating simple functions without
having to create a file for them each time.
The syntax for creating an anonymous function from an expression is
f = @(arglist)expression
The statement below creates an anonymous function that finds the square of a number. When you
call this function, MATLAB assigns the value you pass in to variable x, and then uses x in the
equation x.^2:
sqr = @(x) x.^2;
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
28/53
31
www.thinnkware.com
To execute the sqr function defined above, type
a = sqr(5)
a =
25
Primary and Subfunctions
Any function that is not anonymous must be defined within a file. Each such function file containsa requiredprimary function that appears first, and any number ofsubfunctions that may follow the
primary. Primary functions have a wider scope than subfunctions. That is, primary functions can
be called from outside of the file that defines them (e.g., from the MATLAB command line or
from functions in other files) while subfunctions cannot. Subfunctions are visible only to the
primary function and other subfunctions within their own file.
The rankfunction shown in the section on functions is an example of a primary function.
Private Functions
Aprivate function is a type of primary function. Its unique characteristic is that it is visible only toa limited group of other functions. This type of function can be useful if you want to limit access
to a function, or when you choose not to expose the implementation of a function.
Private functions reside in subfolders with the special nameprivate. They are visible only to
functions in the parent folder. For example, assume the foldernewmath is on the MATLAB search
path. A subfolder ofnewmath calledprivate can contain functions that only the functions in newmath
can call.
Because private functions are invisible outside the parent folder, they can use the same names as
functions in other folders. This is useful if you want to create your own version of a particular
function while retaining the original in another folder. Because MATLAB looks for private
functions before standard functions, it will find a private function named test.m before a nonprivate
file named test.m.
Nested Functions
You can define functions within the body of another function. These are said to be nestedwithin
the outer function. A nested function contains any or all of the components of any other function.
In this example, function B is nested in function A:function x = A(p1, p2)
...B(p2)
function y = B(p3)
...end
...end
Like other functions, a nested function has its own workspace where variables used by the
function are stored. But it also has access to the workspaces of all functions in which it is nested.
So, for example, a variable that has a value assigned to it by the primary function can be read or
overwritten by a function nested at any level within the primary. Similarly, a variable that is
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
29/53
32
www.thinnkware.com
assigned in a nested function can be read or overwritten by any of the functions containing that
function.
Function Overloading
Overloaded functions act the same way as overloaded functions in most computer languages.
Overloaded functions are useful when you need to create a function that responds to differenttypes of inputs accordingly. For instance, you might want one of your functions to accept both
double-precision and integer input, but to handle each type somewhat differently. You can make
this difference invisible to the user by creating two separate functions having the same name, and
designating one to handle double types and one to handle integers. When you call the function,
MATLAB chooses which file to dispatch to based on the type of the input arguments.
Global Variables
If you want more than one function to share a single copy of a variable, simply declare the
variable as global in all the functions. Do the same thing at the command line if you want the base
workspace to access the variable. The global declaration must occur before the variable is actually
used in a function. Although it is not required, using capital letters for the names of global
variables helps distinguish them from other variables. For example, create a new function in a file
called falling.m:
function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;
Then interactively enter the statements
global GRAVITY
GRAVITY = 32;y = falling((0:.1:5)');
The two global statements make the value assigned to GRAVITY at the command prompt availableinside the function. You can then modify GRAVITY interactively and obtain new solutions without
editing any files.
Passing String Arguments to Functions
You can write MATLAB functions that accept string arguments without the parentheses and
quotes. That is, MATLAB interprets
foo a b c
as
foo('a','b','c')
However, when you use the unquoted form, MATLAB cannot return output arguments. Forexample,legend apples oranges
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
30/53
33
www.thinnkware.com
creates a legend on a plot using the strings apples and oranges as labels. If you want the legend
command to return its output arguments, then you must use the quoted form:
[legh,objh] = legend('apples','oranges');
In addition, you must use the quoted form if any of the arguments is not a string.
Caution While the unquoted syntax is convenient, in some cases it can be used
incorrectly without causing MATLAB to generate an error.
Constructing String Arguments in Code
The quoted form enables you to construct string arguments within the code. The following
example processes multiple data files, August1.dat, August2.dat, and so on. It uses the function
int2str, which converts an integer to a character, to build the filename:
for d = 1:31
s = ['August' int2str(d) '.dat'];
load(s)% Code to process the contents of the d-th file
end
The eval Function
The eval function works with text variables to implement a powerful text macro facility. The
expression or statement
eval(s)
uses the MATLAB interpreter to evaluate the expression or execute the statement contained in the
text string s.
The example of the previous section could also be done with the following code, although this
would be somewhat less efficient because it involves the full interpreter, not just a function call:
for d = 1:31
s = ['load August' int2str(d) '.dat'];
eval(s)
% Process the contents of the d-th file
end
Function Handles
You can create a handle to any MATLAB function and then use that handle as a means of
referencing the function. A function handle is typically passed in an argument list to other
functions, which can then execute, orevaluate, the function using the handle.
Construct a function handle in MATLAB using the atsign, @, before the function name. The
following example creates a function handle for the sin function and assigns it to the variable
fhandle:
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
31/53
34
www.thinnkware.com
fhandle = @sin;
You can call a function by means of its handle in the same way that you would call the function
using its name. The syntax is
fhandle(arg1, arg2, ...);
The functionplot_fhandle, shown below, receives a function handle and data, generates y-axis data
using the function handle, and plots it:
function plot_fhandle(fhandle, data)
plot(data, fhandle(data))
When you callplot_fhandle with a handle to the sin function and the argument shown below, the
resulting evaluation produces a sine wave plot:
plot_fhandle(@sin, -pi:0.01:pi)
Function Functions
A class of functions called "function functions" works with nonlinear functions of a scalar
variable. That is, one function works on another function. The function functions include
Zero finding Optimization Quadrature Ordinary differential equations
MATLAB represents the nonlinear function by the file that defines it. For example, here is a
simplified version of the function humps from the matlab/demos folder:
function y = humps(x)
y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;
Evaluate this function at a set of points in the interval 0 x 1 with
x = 0:.002:1;
y = humps(x);
Then plot the function with
plot(x,y)
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
32/53
35
www.thinnkware.com
The graph shows that the function has a local minimum nearx = 0.6. The function fminsearch
finds the minimizer, the value ofx where the function takes on this minimum. The first argumentto fminsearch is a function handle to the function being minimized and the second argument is a
rough guess at the location of the minimum:
p = fminsearch(@humps,.5)
p =
0.6370
To evaluate the function at the minimizer,
humps(p)
ans =
11.2528
Numerical analysts use the terms quadrature and integration to distinguish between numerical
approximation of definite integrals and numerical integration of ordinary differential equations.
MATLAB quadrature routines are quad and quadl. The statement
Q = quadl(@humps,0,1)
computes the area under the curve in the graph and produces
Q =
29.8583
Finally, the graph shows that the function is never zero on this interval. So, if you search for a
zero with
z = fzero(@humps,.5)
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
33/53
36
www.thinnkware.com
you will find one outside the interval
z =
-0.1316
Vectorization
One way to make your MATLAB programs run faster is to vectorize the algorithms you use in
constructing the programs. Where other programming languages might use forloops orDO loops,
MATLAB can use vector or matrix operations. A simple example involves creating a table of
logarithms:
x = .01;
for k = 1:1001
y(k) = log10(x);
x = x + .01;
end
A vectorized version of the same code is
x = .01:.01:10;
y = log10(x);
For more complicated code, vectorization options are not always so obvious.
Preallocation
If you cannot vectorize a piece of code, you can make yourforloops go faster by preallocating any
vectors or arrays in which output results are stored. For example, this code uses the function zeros
to preallocate the vector created in the forloop. This makes the forloop execute significantly
faster:
r = zeros(32,1);
for n = 1:32
r(n) = rank(magic(n));
end
Without the preallocation in the previous example, the MATLAB interpreter enlarges the rvectorby one element each time through the loop. Vector preallocation eliminates this step and results in
faster execution.
Examples of scripts:
1. Script 1:
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
34/53
37
www.thinnkware.com
%% To study the script.
% find out the total no of years for doubling the amount invested.
format long
invest=input('type the investment: ');
r=0.05; % interest rate
bal=invest;year=0;
disp(' year ')
while (bal
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
35/53
38
www.thinnkware.com
Programming Flow statements:
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
36/53
39
www.thinnkware.com
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
37/53
40
www.thinnkware.com
The condition is a logical relation and the statements are executed repeatedly
while the condition remains true. The condition is tested each time before
the statements are repeated. It must eventually become false after a finite
number of steps, or the program will never terminate.
Example. Suppose we have invested some money in a fund which pays 5%
(compound) interest per year, and we would like to know how long it takes
for the value of the investment to double. Indeed we would like to obtain a
statement of the account for each year until the balance is doubled. We
cannot use a forloop in this case, because we do not know beforehand how
long this will take, so we cannot assign a value for the number of iterations
on entering the loop. Instead, we must use a whileloop.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
38/53
41
www.thinnkware.com
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
39/53
42
www.thinnkware.com
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
40/53
4
www.thinnkware.com
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
41/53
4
www.thinnkware.com
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
42/53
4
www.thinnkware.com
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
43/53
4
www.thinnkware.com
EXERCISES3.1
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
44/53
4
www.thinnkware.com
Introduction to Computer vision
About Vision Sensors:Vision sensors are video cameras with integrated signal processing and imaging electronics. They are used in
industrial inspection, quality control, and design and manufacturing diagnostic applications. They ofteninclude interfaces for programming and data output, and a variety of measurement and inspection functions.
When specifying vision sensors, it is important to determine whether a monochrome or color sensor
is needed. Monochrome vision sensors present the image in black and white, or grayscale. Color sensingvision sensors are able the read the spectrum range using varying combinations of different discrete colors.
One common technique is sensing the red, green, and blue components (RGB) and combining them to create
a wide spectrum of colors. Multiple chip color is available on some vision sensors. It is a method ofcapturing color in which multiple chips are each dedicated to capturing part of the color image, such as one
color, and the results are combined to generate the full color image. They typically employ color separation
devices such as beam splitters rather than having integral filters on the sensors.Important specifications to consider when searching for vision sensors include number of images
stored and maximum inspection rate. The number of images stored represents captured images that can be
stored into on-board memory or non-volatile storage. The maximum inspection rate is the maximum numbeof parts or process steps that can be inspected or evaluated per unit time. This is usually given in units of
inspections per second. Other important parameters include horizontal resolution, maximum frame rate,
shutter speed, sensitivity, and signal to noise ratio.
Inspection functions include object detection, edge detection, image direction, alignment, objectmeasurement, object position, bar or matrix code, optical character recognition (OCR), and color mark or
color recognition. Imaging technology used in vision sensors includes CCD, CMOS, tube, and film. Charge
Coupled Devices (CCD) use a light-sensitive material on a silicon chip to detect electrons excited byincoming light. They also contain integrated microcircuitry required to transfer the detected signal along a
row of discrete picture elements (or pixels) and thereby scan an image very rapidly. CMOS image sensors
operate at lower voltages than CCDs, reducing power consumption for portable applications. Analog anddigital processing functions can be integrated readily onto the CMOS chip, reducing system package size and
overall cost. In a tube camera, the image is formed on a fluorescent screen. It is then read by an electron
beam in a raster scan pattern and converted to a voltage proportional to the image light intensity. With filmtechnology the image is exposed onto photosensitive film, which is then developed to be played or stored.
The shutter, a manual door that admits light to the film, typically controls exposure.
Other parameters to consider when specifying vision sensors include performance features, physicalfeatures, lens mounting, shutter control, sensor specifications, dimensions, and operating environment
parameters.
Cameras Available:
CCD Cameras: Charge coupled device (CCD) cameras contain light-sensitive silicon chips that detectelectrons excited by incoming light. They also contain micro circuitry that transfers a detected signal along a
row of discrete picture elements or pixels, scanning the image very rapidly. CCD cameras use two-dimensional CCD arrays with many thousands of pixels.
CMOS Cameras: Complementary metal oxide semiconductor (CMOS) cameras use image sensors thatoperate at lower voltages than charged coupled devices (CCDs), reducing power consumption for portable
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
45/53
4
www.thinnkware.com
applications. Each CMOS active pixel sensor cell has its own buffer amplifier, and can be addressed and rea
individually.
High Speed Cameras: High speed cameras are designed for rapid image acquisition for scientific or
industrial analysis of rapidly changing or moving processes.
Low Light Cameras: Low light cameras are designed for low light applications. They contain sensors that
are highly sensitive to light and reduce images to a series of lines.
Video Cameras: Video cameras take continuous pictures and generate signals for display or recording. They
capture images by breaking them down into a series of lines. This search form does not include consumer
devices such as camcorders.
Image Processing
Images in MATLAB:
MATLAB stores most images as two-dimensional arrays (i.e., matrices), in which each element of the matri
corresponds to a single pixel in the displayed image. (Pixel is derived from picture element and usually
denotes a single dot on a computer display.)
Image Coordinate Systems:
They are of two types:
1. Pixel Co-ordinates
2. Spatial Co-ordinates
Pixel Co-ordinates:
In this coordinate system, the image is treated as a grid of discrete elements, ordered from top to bottom andleft to right
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
46/53
4
www.thinnkware.com
For pixel coordinates, the first component r (the row) increases downward,while the second component c (th
column) increases to the right. Pixel coordinates are integer values and range between 1 and the length of the
row or column.
Spatial Co-ordinates:
In this spatial coordinate system, locations in an image are positions on a plane, and they are described interms of x and y (not r and c as in the pixel coordinate system).
Facts:
1. The spatial coordinates of the center point of any pixel are identical to the pixel coordinates for that pixel.
2. In pixel coordinates, the upper left corner of an image is (1,1), while in spatial coordinates, this location b
default is (0.5,0.5). This difference is due to the pixel coordinate systems being discrete, while the spatial
coordinate system is continuous. Also, the upper left corner is always (1,1) in pixel coordinates, but you canspecify a nondefault origin for the spatial coordinate system.
3. The order of the horizontal and vertical components is reversed in the notation forthese two systems. As mentioned earlier, pixel coordinates are expressed as
(r,c), while spatial coordinates are expressed as (x,y).
Image Types in the Toolbox:
Overview of Image Types
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
47/53
5
www.thinnkware.com
Binary Images
In a binary image, each pixel assumes one of only two discrete values: 1 or 0. A binary image is stored as a
logical array. By convention, this documentation uses the variable name BW to refer to binary images.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
48/53
5
www.thinnkware.com
Indexed Images
An indexed image consists of an array and a colormap matrix. The pixel values in the array are direct indiceinto a colormap. By convention, this documentation uses the variable name X to refer to the array and map to
refer to the colormap.
The colormap matrix is an m-by-3 array of class double containing floating-point values in the range [0,1].
Each row of map specifies the red, green, and blue components of a single color. An indexed image usesdirect mapping of pixel values to colormap values. The color of each image pixel is determined by using the
corresponding value of X as an index into map.
A colormap is often stored with an indexed image and is automatically loaded with the image when you usethe imread function.After you read the image and the colormap into the MATLAB workspace as separate
variables, you must keep track of the association between the image and colormap. However, you are not
limited to using the default colormap--you can use any colormap that you choose.
The relationship between the values in the image matrix and the colormap depends on the class of the imagematrix. If the image matrix is of class single or double,it normally contains integer values 1 through p, where
p is the length of the colormap. the value 1 points to the first row in the colormap, the value 2 points to thesecond row, and so on. If the image matrix is of class logical, uint8 or uint16, the value 0 points to the first
row in the colormap, the value 1 points to the second row, and so on.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
49/53
5
www.thinnkware.com
Grayscale ImagesA grayscale image (also called gray-scale, gray scale, or gray-level) is a data matrix whose values represent
intensities within some range. MATLAB stores a grayscale image as a individual matrix, with each element
of the matrix corresponding to one image pixel. By convention, this documentation uses the variable name Ito refer to grayscale images.
The matrix can be of class uint8, uint16, int16, single, or double.While grayscale images are rarely saved
with a colormap, MATLAB uses a colormap to display them.
For a matrix of class single or double, using the default grayscale colormap, the intensity 0 represents blackand the intensity 1 represents white. For a matrix of type uint8, uint16, or int16, the intensity intmin(class(I)
represents black and the intensity intmax(class(I)) represents white.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
50/53
5
www.thinnkware.com
Truecolor Images
A truecolor image is an image in which each pixel is specified by three values one each for the red, blue,and green components of the pixel's color. MATLAB store truecolor images as an m-by-n-by-3 data array
that defines red, green, and blue color components for each individual pixel. Truecolor images do not use a
colormap. The color of each pixel is determined by the combination of the red, green, and blue intensities
stored in each color plane at the pixel's location.Graphics file formats store truecolor images as 24-bit images, where the red, green, and blue components are
8 bits each. This yields a potential of 16 million colors. The precision with which a real-life image can be
replicated has led to the commonly used term truecolor image.A truecolor array can be of class uint8, uint16, single, or double. In a truecolor array of class single or
double, each color component is a value between 0 and 1. A pixel whose color components are (0,0,0) is
displayed as black, and a pixel whose color components are (1,1,1) is displayed as white. The three colorcomponents for each pixel are stored along the third dimension of the data array. For example, the red, green
and blue color components of the pixel (10,5) are stored in RGB(10,5,1), RGB(10,5,2), and RGB(10,5,3),
respectively.
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
51/53
5
www.thinnkware.com
To determine the color of the pixel at (2,3), you would look at the RGB triplet stored in (2,3,1:3). Suppose
(2,3,1) contains the value 0.5176, (2,3,2) contains 0.1608, and (2,3,3) contains 0.0627. The color for the pixe
at (2,3) is0.5176 0.1608 0.0627To further illustrate the concept of the three separate color planes used in atruecolor image, the code sample below creates a simple image containing uninterrupted areas of red, green,
and blue, and then creates one image for each of its separate color planes (red, green, and blue).
Program: Write the program which displays each color plane image separately, and also displays the
original image.RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]);
R=RGB(:,:,1);G=RGB(:,:,2);
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
52/53
5
www.thinnkware.com
B=RGB(:,:,3);
imshow(R)
figure, imshow(G)figure, imshow(B)
figure, imshow(RGB)
Ouput:
7/30/2019 X-EyeBOT IITB BasicStudyMaterial
53/53
Converting Between Image Types:
Program: Write a program to convert the one type of image in to other.
i=imread('Red.jpg');
imfinfo('Red.jpg'); %gives various infomation about the image.t=im2double(i) %Convert image to double precision
h=rgb2hsv(i); %converts the RGB image into HSV imagefigure;imshow(h(:,:,1)); %displays the hue component of HSV image.figure;imshow(h(:,:,2)); %displays the saturation component of HSV image.figure;imshow(h(:,:,3)); %displays the intensity component of HSV image.
r=hsv2rgb(h); %converts the HSV image into RGB imagefigure;imshow(i(:,:,1)); % displays the red component of RGB image.figure;imshow(i(:,:,2)); % displays the green component of RGB image.figure;imshow(i(:,:,3)); % displays the blue component of RGB image.