INTRODUCTION
TO MATLAB
AM2032 JAYANTA MUKHERJEE
Introduction to MATLAB Running MATLAB and MATLAB Environment Getting help
Variables, Arithmetic and Logical Operators
Matrices and Vectors Mathematical Functions Plotting Programming M-files User Defined Functions Miscellaneous Tips
AM2032 JAYANTA MUKHERJEE
Introduction to MATLAB
AM2032 JAYANTA MUKHERJEE
Running MATLAB & the MATLAB Environment
You can enter MATLAB with system command matlab , C:> matlab. Or, it can be started by clicking on the start-up menu or a short-cut icon
AM2032 JAYANTA MUKHERJEE
MATLAB Desktop
Command Window is used to enter variables Launch Pad is used to and run functions and Launch Pad provide easy access to Command M-files. The Command Command HistoryWindow is window is where you tools, demos, and to the view previously >> symbol, you can interact with used After can type the commands documentation. Matlab directly. Default used functions, and Command directory on working selected lines can be History Windows is C:/ MATLAB / bin. copied and executed.
AM2032 JAYANTA MUKHERJEE
MATLAB Desktop contd
Workspace consists of the set of variablesDirectory (named arrays) Current built up during a is used to change MATLAB session and Command Window stored in that memory. directory is worked on, quickly.
Workspace
Current Directory
AM2032 JAYANTA MUKHERJEE
MATLAB Editor
Access to commands
Color keyed text with auto indents
tabbed sheets for other files being edited
AM2032 JAYANTA MUKHERJEE
Getting MATLAB Help
Type one of the following commands in the command window:
>>help lists all the help topics >>help topic provides help for the specified topic >>help command provides help for the specified command >>helpwin opens a separate help window for navigation >>Lookfor keyword search all M-files for keyword
Online resource
AM2032 JAYANTA MUKHERJEE
MATLAB Variables
The MATLAB environment is command oriented somewhat like UNIX. A prompt appears on the screen and a MATLAB statement can be entered. When the <ENTER> key is pressed, the statement is executed, and another prompt appears. If a statement is terminated with a semicolon ( ; ), no results will be displayed. Otherwise results will appear before the next prompt. Variable names ARE case sensitive. Variable names can contain up to 63 characters (as of MATLAB 6.5 and newer). Variable names must start with a letter followed by letters, digits, and underscores. Variable names and their types do not have to be declared in MATLAB. Any variable can take real, complex, and integer values. The name of variable is not accepted if it is reserved word.
AM2032 JAYANTA MUKHERJEE
MATLAB Variables contd
Special variables:
ans: default variable name for the result. pi: = 3.1415926 eps: = 2.2204e-016, smallest value by which two numbers can differ inf: , infinity NAN or nan: not-a-number
Commands involving variables:
who: lists the names of the defined variables whos: lists the names and sizes of defined variables clear: clears all variables clear name: clears the variable name clc: clears the command window clf: clears the current figure and the graph window Ctrl+C: Aborts calculation
AM2032 JAYANTA MUKHERJEE
MATLAB Variables contd
You can think of computer memory as a large set of boxes in which numbers can be stored. The values can be inspected and changed.
Boxes can be labeled with a variable name.
>> A=3 A= 3
3 A
AM2032 JAYANTA MUKHERJEE
MATLAB Variables contd
Suppose we want to calculate the volume of a cylinder. Its radius and height are stored as variables in memory.
>> volume = pi*radius^2*height
volume
radius
AM2032 JAYANTA MUKHERJEE
height
MATLAB Variables contd
Variable is a name given to a reserved location in memory.
>>x = 111; >>number_of_students = 75; >>name = University College Cork; >>radius = 5; >>area = pi * radius^2; >>x_value=23 x_value=23
AM2032 JAYANTA MUKHERJEE
MATLAB Arithmetic Operators
Operator
+ -
Description
Addition Subtraction
.*
./ .\ =
Multiplication (element wise)
Right division (element wise) Left division (element wise) Assignment operator,e.g. a = b,(assign b to a)
:
.^ ' *
Colon operator (Specify Range )
Power (element wise) Transpose Matrix multiplication
/
\ ; ^
Matrix right division
Matrix left division Row separator in a Matrix Matrix power
AM2032 JAYANTA MUKHERJEE
Logical Operators in MATLAB
Operator
&
| ~ < <= > >= == ~=
Description
Returns 1 for every element location that is true (nonzero) in both arrays, and 0 for all other elements.
Returns 1 for every element location that is true (nonzero) in either one or the other, or both, arrays and 0 for all other elements. Complements each element of input array, A. Less than Less than or equal to Greater than Greater than or equal to Equal to Not equal to
AM2032 JAYANTA MUKHERJEE
Calculations at the Command Line / Workspace
MATLAB as a calculator Assigning Variables
a = 2;
b = 5; a^b ans = 32
-5/(4.8+5.32)^2 ans = -0.0488 (3+4i)*(3-4i) ans = 25 cos(pi/2) ans = 6.1230e-017 exp(acos(0.3)) ans = 3.5470
Semicolon suppresses screen output
Results assigned to ans if name not specified
x = 5/2*pi;
y = sin(x) y = 1 z = asin(y) z = 1.5708
() parentheses for function inputs
AM2032 JAYANTA MUKHERJEE
Copyright 1984 - 1998 by The MathWorks, Inc.
Vector & Matrix in MATLAB
How do A=
Columns (n) you 1 specify 2 this 3 5 5 4 matrix 5
A in MATLAB ?
A (2,4) >>A=[4 10 1 6 2
1 2
10
11
16
21
1.2 7
5
8
9
7
12
4
1
17
25 22
11 23
Rows (m) 3 4
7.2 3
13
18
8 1.2 9 4 25 A (17) 7.2 5 7 1 11 0 0.5 4 5 56
0
23
0.5 9
14
5
0
19
56 24
10 25
Rectangular Matrix: 23 83 13 0 10 ]; Scalar: 1-by-1 array m-by-1 array >>A=[4 10 1 6 2; 8 1.2 4EITHER 25; 7.2 5 7 1 11; 0 0.5 4 Vector: 5 56; 23 83 13 0 10 ]; Matrix elements can 9 be 1-by-n array numbers OR characters Matrix: m-by-n array
AM2032 JAYANTA MUKHERJEE
Copyright 1984 - 1998 by The MathWorks, Inc.
83 10 13 15
20
Examples (Vectors)
X=[2 7 4]; X=[2; 7; 4]; X=[2 7 4];
2 7 4
Row Vector Column Vector
2 7 4
2 7 4 3 8 9
X=[2 7 4;3 8 9];
Matrix or a 2D array Matrix of matrices
Y=[X X];
2 7 ? 4 2 7 4 3 8 9 3 8 9
AM2032 JAYANTA MUKHERJEE
More on Vectors
x = start:end Creates row vector x starting with start, counting by 1 , ending at end x = initial value : increment : final Creates row vector x starting with start, counting by value increment, ending at or before end x = linspace(start,end,number) x = logspace(start,end,number) length(x) y = x dot(x,y),cross(x,y) Creates linearly spaced row vector x starting with start, ending at end, having number elements Creates logarithmically spaced row vector x starting with start, ending with end, having number elements Returns the length of vector x Transpose of vector x Returns the scalar dot and vector cross product of the vector x and y
AM2032 JAYANTA MUKHERJEE
More on Matrices
zeros(n) zeros(m,n) rand(m,n) Returns a n n matrix of zeros Returns a m n matrix of zeros Returns a m n matrix of random numbers
eye(m,n)
ones(n) ones(m,n)
Returns a m n Identity matrix
Returns a n n matrix of ones Returns a m n matrix of ones For a m n matrix A, returns the row vector [m,n] containing the number of rows and columns in matrix Returns the larger of the number of rows or columns in A
AM2032 JAYANTA MUKHERJEE
size(A)
length(A)
Entering Numeric Arrays
Row separator: semicolon (;) Column separator: space / comma (,)
a=[1 2;3 4]
a =
1 3 b = 2 4
Use square brackets [ ]
b=[-2.8, sqrt(-7), (3+5+6)*3/4] 10.5000
MATLAB does not-2.8000 allow this ! 0 + 2.6458i
b(2,5) = 23 b = -2.8000 0 + 2.6458i
10.5000
23.0000
Matrices must be rectangular/same height. (Set undefined elements to zero)
Any MATLAB expression can be entered as a matrix element
Copyright 1984 - 1998 by The MathWorks, Inc.
AM2032 JAYANTA MUKHERJEE
Entering Numeric Arrays - cont.
Scalar expansion
w=[1 2;3 4] + 5 w = 6 7 8 9 x = 1:5 x =
Creating sequences colon operator (:)
1 2 y = 2:-0.5:0
y = 2.0000 1.5000 z = rand(2,4)
1.0000
0.5000
Utility functions for creating matrices.
z =
0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565 0.0185
AM2032 JAYANTA MUKHERJEE
Copyright 1984 - 1998 by The MathWorks, Inc.
Numerical Array Concatenation - [ ]
Use [ ] to combine existing arrays as matrix elements
a=[1 2;3 4]
a =
1 3 2 4
Use square brackets [ ]
4*a; 5*a, 6*a]
Row separator: semicolon (;) Column separator: space / comma (,)
cat_a=[a, 2*a; 3*a, cat_a = 1 2 2 3 4 6 3 6 4 9 12 12 5 10 6 15 20 18
4 8 8 16 12 24
4*a
The resulting matrix must be rectangular.
AM2032 JAYANTA MUKHERJEE
Copyright 1984 - 1998 by The MathWorks, Inc.
Array Subscripting / Indexing
1 2 3 4 5
A=
1 2
4 8
10
1 9 7 4
11
6 4 1 5 0
16
21
1.2 7 5
8
12
17
25 22 11 23 56 24 10 25
A(4:5,2:3) A([9 14;10 15]) A(1:5,5) A(1:end,end) A(:,5) A(:,end) A(21:25) A(21:end)
3 7.2
13
18
A(3,1) A(3)
4
5
0 23
0.5 9
14
19
83 10 13 15
20
Use () parentheses to specify index colon operator (:) specifies range / ALL [ ] to create matrix of index subscripts end specifies maximum index value
AM2032 JAYANTA MUKHERJEE
Copyright 1984 - 1998 by The MathWorks, Inc.
Some operations should be handled with care
>>A=[1 2;4 5];
>>B=A*A
9 12
% prints
24 33 >> >>B=A.*A 1 4
% Proper matrix multiplication
% prints
16 25
% Element by element multiplication
AM2032 JAYANTA MUKHERJEE
Operations on Matrices
Transpose B=A
eye(n) -> returns an n X n identity matrix eye(m,n) -> returns an m X n matrix with ones on the main diagonal and zeros elsewhere C =A +B C =A - B B = A, where is a scalar
Identity Matrix
Addition and Subtraction Scalar Multiplication
Matrix Multiplication
Matrix Inverse Matrix powers Determinant
C=A*B
B = inv(A), A must be a square matrix in this case B = A * A , A must be a square matrix det(A), A must be a square matrix
AM2032 JAYANTA MUKHERJEE
Multidimensional Arrays
>>A = 1; while length(A) < 4 A = [0 A] + [A 0]; end
Page N
1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
Page 1
1 1 1
16 15 9 2 4 3
20 30 130 0 100 80 11 1 1 70 60 120 3 4 14 15 1 6 10
A = Pascal(4); A(:,:,2) = magic(4) A(:,:,1) 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20 A(:,:,2) 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 A(:,:,9) = diag(ones(1,4));
10
20
AM2032 JAYANTA MUKHERJEE
Operating on Matrices
AM2032 JAYANTA MUKHERJEE
Operating on Matrices - cont. Array Multiplication
Matrices must have the same dimensions Dimensions of resulting matrix = dimensions of multiplied matrices Resulting elements = product of corresponding elements from the original matrices
a = [1 2 3 4; 5 6 7 8]; b = [1:4; 1:4]; c = a.*b
c =
1 5 4 12 9 21 16 32
Same rules apply for other array operations too !
c(2,4) = a(2,4)*b(2,4)
AM2032 JAYANTA MUKHERJEE
String Arrays
Created using single quote delimiter (')
str
str = Hi there, str2 = 'Isn't MATLAB great?' str2 =
= 'Hi there,'
Isn't MATLAB great?
Each character is a separate matrix element
(16 bits of memory per character)
str =
1x9 vector
Indexing same as for numeric arrays
AM2032 JAYANTA MUKHERJEE
Mathematical Functions of MATLAB-1
Elemantary Mathematical (Trigonometric) Functions Trigonometric functions sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) atan2(y,x) sinh(x) cosh(x) tanh(x) asinh(x) acosh(x) atanh(x) Remarks - pi/2 atan(x) pi/2, Same as atan(y/x) but pi atan(y,x) pi
AM2032 JAYANTA MUKHERJEE
Mathematical Functions of MATLAB-2
Other elemantary functions Remarks
abs(x) angle(x) sqrt(x) real(x) imag(x) conj(x) round(x) fix(x) floor(x) ceil(x) sign(x) exp(x) log(x) log10(x) factor(x)
Absolute value of x Phase angle of complex value: If x = real, angle = 0. If x = -1, angle = pi/2 Square root of x Real part of complex value x Imaginary part of complex value x Complex conjugate x Round to do nearest integer Round a real value toward zero Round x toward - Round x toward + +1 if x > 0; -1 if x < 0 Exponential base e Log base e Log base 10 1 if x is a prime number, 0 if not
And there are many many more !
AM2032 JAYANTA MUKHERJEE
Plotting in MATLAB
Specify x-data and/or y-data Specify color, line style and marker symbol Syntax: 2-D Plotting
Plotting single line:
plot(xdata, ydata, 'color_linestyle_marker')
Plotting multiple lines:
plot(x1, y1, 'clm1', x2, y2, 'clm2', ...)
AM2032 JAYANTA MUKHERJEE
2-D Plotting - example
Create a Blue (default color) Sine Wave
x = 0:1:2*pi; y = sin(x); plot(x,y);
AM2032 JAYANTA MUKHERJEE
2-D Plotting : example-cont.
Adding a Grid
GRID ON creates a grid on the current figure GRID OFF turns off the grid from the current figure GRID toggles the grid state
x = 0:1:2*pi; y = sin(x); plot(x,y);grid on;
AM2032 JAYANTA MUKHERJEE
Adding additional plots to a figure
HOLD ON holds the current plot HOLD OFF releases hold on current plot HOLD toggles the hold state
x = 0:.1:2*pi; y = sin(x); plot(x,y,'b') grid on; hold on; plot(x,exp(-x),'r:*');
AM2032 JAYANTA MUKHERJEE
Controlling Viewing Area
ZOOM ON allows user to select viewing area
ZOOM OFF prevents zooming operations
ZOOM toggles the zoom state AXIS sets axis range
[xmin xmax ymin ymax] axis([0 2*pi 0 1]);
AM2032 JAYANTA MUKHERJEE
Graph Annotation
TITLE LEGEND
YLABEL
TEXT or GTEXT
XLABEL
AM2032 JAYANTA MUKHERJEE
Subplots
SUBPLOT- display multiple axes in the same figure window
subplot(#rows, #cols, index);
subplot(2,2,1);
plot(1:10); subplot(2,2,2); x = 0:.1:2*pi; plot(x,sin(x)); subplot(2,2,3); x = 0:.1:2*pi;
plot(x,exp(-x),r);
subplot(2,2,4); plot(peaks);
AM2032 JAYANTA MUKHERJEE
Alternative Scales for Axes
LOGLOG Both axes logarithmic
SEMILOGY log Y linear X
SEMILOGX log X linear Y
PLOTYY 2 sets of linear axes
AM2032 JAYANTA MUKHERJEE
3-D Line Plotting
plot3(xdata, ydata, zdata, 'clm', ...)
z = 0:0.1:40; x = cos(z);
y = sin(z);
plot3(x,y,z);grid on;
AM2032 JAYANTA MUKHERJEE
3-D Surface Plotting
AM2032 JAYANTA MUKHERJEE
Example:Advanced 3-D Plotting
B = -0.2; x = 0:0.1:2*pi; y = -pi/2:0.1:pi/2; [x,y] = meshgrid(x,y); z = exp(B*x).*sin(x).*cos(y); surf(x,y,z)
AM2032 JAYANTA MUKHERJEE
Next Lecture: Programming with Matlab
Lecture notes can be found at the following link:
http://euclid.ucc.ie/framesets/fset_staffdirectory.htm
Then click on my name and then on Lecture Notes
AM2032 JAYANTA MUKHERJEE
Questions?
AM2032 JAYANTA MUKHERJEE