An Introductory on
MATLAB and Simulink
Dr. Vijaylakshmi Jigajinni
Dept. of ECE
Introduction to
MATLAB and Simulink
What can you gain from the course ?
Know what MATLAB/Simulink is
Know how to get started with MATLAB/Simulink
Know basics of MATLAB/Simulink
– know how to solve simple problems
Be able to explore MATLAB/Simulink on
your own !
Introduction to
MATLAB and Simulink
Contents
Introduction
Getting Started
Vectors and Matrices
MATLAB
Built in functions
M–files : script and functions
Simulink
Modeling examples SIMULINK
Introduction
MATLAB – MATrix LABoratory
• Initially developed by a lecturer in 1970’s to help students learn linear algebra.
• It was later marketed and further developed under MathWorks Inc. (founded in
1984) – www.mathworks.com
• Matlab is a software package which can be used to perform analysis and solve
mathematical and engineering problems.
• It has excellent programming features and graphics capability – easy to learn
and flexible.
• Available in many operating systems – Windows, Macintosh, Unix, DOS
• It has several tooboxes to solve specific problems.
Introduction
Simulink
– Used to model, analyze and simulate dynamic
systems using block diagrams.
– Fully integrated with MATLAB , easy and fast to
learn and flexible.
– It has comprehensive block library which can be
used to simulate linear, non–linear or discrete
systems – excellent research tools.
– C codes can be generated from Simulink models for
embedded applications and rapid prototyping of
control systems.
Getting Started
Run MATLAB from Start Programs MATLAB
Depending on version used, several windows appear
• For example in Release 13 (Ver 6), there are several windows –
command history, command, workspace, etc
• For Matlab Student – only command window
Command window
• Main window – where commands are entered
Example of MATLAB Release 13 desktop
Variables
– Vectors and Matrices –
ALL variables are matrices
e.g. 1 x 1Variables4 x 1 1 x 4 2x4
3 3 2 i.e1x 7X 2 1 5
4 •They are case–sensitive 6
•Their names
2
9 3
can contain up to 31 characters
2 4
•Must start
9with
a letter
3
Variables are stored in workspace
Vectors and Matrices
• How do we assign a value to a variable?
>>> v1=3 >>> whos
v1 = Name Size Bytes Class
3 R 1x1 8 double array
>>> i1=4 i1 1x1 8 double array
i1 = v1 1x1 8 double array
4 Grand total is 3 elements using 24 bytes
>>> R=v1/i1 >>> who
R= Your variables are:
0.7500 R i1 v1
>>> >>>
Vectors and Matrices
• How do we assign values to vectors?
>>> A = [1 2 3 4 5]
A =
1 2 3 4 5
A row vector –
1are 2 3
Avalues 4 5
>>> separated by
spaces
>>> B = [10;12;14;16;18] 10
B = 12
10
A column
12
B –14
vector
valuesare
14
16
18
16by
separated
>>>
18
semi–colon
(;)
Vectors and Matrices
• How do we assign values to vectors?
If we want to construct a vector of, say, 100 elements
between 0 and 2 – linspace
>>> c1 = linspace(0,(2*pi),100);
>>> whos
Name Size Bytes Class
c1 1x100 800 double array
Grand total is 100 elements using 800 bytes
>>>
Vectors and Matrices
• How do we assign values to vectors?
If we want to construct an array of, say, 100
elements between 0 and 2 – colon notation
>>> c2 = (0:0.0201:2)*pi;
>>> whos
Name Size Bytes Class
c1 1x100 800 double array
c2 1x100 800 double array
Grand total is 200 elements using 1600 bytes
>>>
Vectors and Matrices
• How do we assign values to matrices ?
>>> A=[1 2 3;4 5 6;7 8 9]
A =
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9
>>> 7 8 9
Columns separated by Rows separated by
space or a comma semi-colon
Vectors and Matrices
• How do we access elements in a matrix or a vector?
Try the followings:
>>> A(2,3) >>> A(:,3)
ans = ans =
6 3
6
9
>>> A(2,:)
>>> A(1,:)
ans =
ans =
4 5 6
1 2 3
Vectors and Matrices
• Some special variables
>>> 1/0
Warning: Divide by zero.
beep
ans =
pi () Inf
inf (e.g. 1/0) >>> pi
ans =
i, j ( 1 )
3.1416
>>> i
ans =
0+ 1.0000i
Vectors and Matrices
• Arithmetic operations – Matrices
Performing operations to every entry in a matrix
>>> A=[1 2 3;4 5 6;7 8 Add and subtract
9]
A = >>> A+3
1 2 3 ans =
4 5 6 4 5 6
7 8 9 7 8 9
>>> 10 11 12
>>> A-2
ans =
-1 0 1
2 3 4
5 6 7
Vectors and Matrices
• Arithmetic operations – Matrices
Performing operations to every entry in a matrix
>>> A=[1 2 3;4 5 6;7 8 9] Multiply and divide
A =
1 2 3 >>> A*2
4 5 6 ans =
7 8 9 2 4 6
>>> 8 10 12
14 16 18
>>> A/3
ans =
0.3333 0.6667 1.0000
1.3333 1.6667 2.0000
2.3333 2.6667 3.0000
Vectors and Matrices
• Arithmetic operations – Matrices
Performing operations to every entry in a matrix
>>> A=[1 2 3;4 5 6;7 8 9]
Power
A= To square every element in A, use
1 2 3 the element–wise operator .^
4 5 6
7 8 9 >>> A.^2
>>> ans =
1 4 9
16 25 36
49 64 81
>>> A^2
ans =
A^2 = A * A 30 36 42
66 81 96
102 126 150
Vectors and Matrices
• Arithmetic operations – Matrices
Performing operations between matrices
>>> A=[1 2 3;4 5 6;7 8 9] >>> B=[1 1 1;2 2 2;3 3 3]
A = B =
1 2 3 1 1 1
4 5 6 2 2 2
7 8 9 3 3 3
1 2 3 1 1 1 14 14 14
4 5 6 2 2 2 32 32 32
=
A*B 7 8 9 3 3 3 50 50 50
1x1 2 x1 3x1 1 2 3
4 x 2 5x 2 6 x 2 8 10 12
A.*B =
7 x 3 8x 3 9 x 3 21 24 27
Vectors and Matrices
• Arithmetic operations – Matrices
Performing operations between matrices
A/B ? (matrices singular)
1 / 1 2 / 1 3 / 1 1.0000 2.0000 3.0000
A./B 4 / 2 5 / 2 6 / 2 =
2.0000 2.5000 3.0000
7 / 3 8 / 3 9 / 3 2.3333 2.6667 3.0000
Vectors and Matrices
• Arithmetic operations – Matrices
Performing operations between matrices
??? Error using ==> ^
A^B
At least one operand must be scalar
11 21 31 1 2 3
A.^B 2
4 52
62
=
16 25 36
73 83 93 343 512 729
Vectors and Matrices
• Arithmetic operations – Matrices
Example:
-j5
j10
2-90o 10 1.50o
Solve for V1 and V2
Vectors and Matrices
• Arithmetic operations – Matrices
Example (cont)
(0.1 + j0.2)V1 – j0.2V2 = -j2
- j0.2V1 + j0.1V2 = 1.5
0.1 j0.2 j0.2 V1 j2
j0.2 =
j0 . 1 V2 1. 5
A x = y
Vectors and Matrices
• Arithmetic operations – Matrices
Example (cont)
>>> A=[(0.1+0.2j) -0.2j;-0.2j 0.1j]
A =
0.1000+ 0.2000i 0- 0.2000i
0- 0.2000i 0+ 0.1000i
>>> y=[-2j;1.5]
y =
0- 2.0000i
1.5000
*
>>> x=A\y
x = A\B is the matrix division of A into B, wh
14.0000+ 8.0000i
ich is roughly the same as INV(A)*B
28.0000+ 1.0000i *
>>>
Vectors and Matrices
• Arithmetic operations – Matrices
Example (cont)
>>> V1= abs(x(1,:))
V1 =
16.1245
>>> V1ang= angle(x(1,:))
V1ang =
0.5191
V1 = 16.1229.7o V
Built in functions
(commands)
Scalar functions – used for scalars and operate
element-wise when applied to a matrix or vector
e.g. sin cos tan atan asin log
abs angle sqrt round floor
At any time you can use the command
help to get help
e.g. >>>help sin
Built in functions (commands)
>>> a=linspace(0,(2*pi),10)
a =
Columns 1 through 7
0 0.6981 1.3963 2.0944 2.7925 3.4907
4.1888
Columns 8 through 10
4.8869 5.5851 6.2832
>>> b=sin(a)
b =
Columns 1 through 7
0 0.6428 0.9848 0.8660 0.3420 -0.3420
-0.8660
Columns 8 through 10
-0.9848 -0.6428 0.0000
>>>
Built in functions (commands)
Vector functions – operate on vectors returning
scalar value
e.g. max min mean prod sum length
>>> max(b)
>>> a=linspace(0,(2*pi),10); ans =
>>> b=sin(a); 0.9848
>>> max(a)
ans =
6.2832
>>> length(a)
ans =
10
>>>
Built in functions (commands)
Matrix functions – perform operations on
matrices
>>> help elmat
>>> help matfun
e.g. eye size inv det eig
At any time you can use the command
help to get help
Built in functions (commands)
Matrix functions – perform operations on
matrices
>>> x=rand(4,4) >>> x*xinv
x=
0.9501 0.8913 0.8214 0.9218 ans =
0.2311 0.7621 0.4447 0.7382
0.6068 0.4565 0.6154 0.1763 1.0000 0.0000 0.0000 0.0000
0.4860 0.0185 0.7919 0.4057 0 1.0000 0 0.0000
>>> xinv=inv(x) 0.0000 0 1.0000 0.0000
xinv = 0 0 0.0000 1.0000
2.2631 -2.3495 -0.4696 -0.6631
-0.7620 1.2122 1.7041 -1.2146 >>>
-2.0408 1.4228 1.5538 1.3730
1.3075 -0.0183 -2.5483 0.6344
Built in functions (commands)
From our previous example,
0.1 j0.2 j0.2 V1 j2
j0.2 =
j0 . 1 V
2 1.5
A x = y
>>> x=inv(A)*y
x =
14.0000+ 8.0000i
28.0000+ 1.0000i
Built in functions (commands)
Data visualisation – plotting graphs
>>> help graph2d
>>> help graph3d
e.g. plot polar loglog mesh
semilog plotyy surf
Built in functions (commands) eg1_plt.m
Data visualisation – plotting graphs
Example on plot – 2 dimensional plot
Example on plot – 2 dimensional plot
>>> x=linspace(0,(2*pi),100);
>>> y1=sin(x);
Add title, labels and legend
>>> y2=cos(x);
>>> plot(x,y1,'r-') title xlabel ylabel legend
>>> hold
Current plot held
Use ‘copy’ and ‘paste’ to add to your
>>> plot(x,y2,'g--') window–based document, e.g. MSword
>>>
Built in functions (commands) eg1_plt.m
Data visualisation – plotting graphs
Example on plot – 2 dimensional plot
Example on plot
1
sin(x)
0.8 cos(x)
0.6
0.4
0.2
y1 and y2
-0.2
-0.4
-0.6
-0.8
-1
0 1 2 3 4 5 6 7
angular frequency (rad/s)
Built in functions (commands) eg2_srf.m
Data visualisation – plotting graphs
Example on mesh and surf – 3 dimensional plot
Supposed we want to visualize a function
Z = 10e(–0.4a) sin (2ft) for f = 2
when a and t are varied from 0.1 to 7 and 0.1 to 2, respectively
>>> [t,a] = meshgrid(0.1:.01:2, 0.1:0.5:7);
>>> f=2;
>>> Z = 10.*exp(-a.*0.4).*sin(2*pi.*t.*f);
>>> surf(Z);
>>> figure(2);
>>> mesh(Z);
Built in functions (commands) eg2_srf.m
Data visualisation – plotting graphs
Example on mesh and surf – 3 dimensional plot
Built in functions (commands) eg3_srf.m
Data visualisation – plotting graphs
Example on mesh and surf – 3 dimensional plot
>>> [x,y] = meshgrid(-3:.1:3,-3:.1:3);
>>> z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...
- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
- 1/3*exp(-(x+1).^2 - y.^2);
>>> surf(z);
Built in functions (commands) eg2_srf.m
Data visualisation – plotting graphs
Example on mesh and surf – 3 dimensional plot
M-files :
Script and function files
When problems become complicated and require re–
evaluation, entering command at MATLAB prompt is
not practical
Solution : use M-files
Script Function
Collections of commands User defined commands
Executed in sequence when called Normally has input &
Saved with extension “.m” output
Saved with extension “.m”
M-files : script and function files (script) eg1_plt.m
At Matlab prompt type in edit to invoke M-file editor
Save this file
as test1.m
M-files : script and function files (script)
To run the M-file, type in the name of the file at the
prompt e.g. >>> test1
It will be executed provided that the saved file is in the
known path
Type in matlabpath to check the list of directories
listed in the path
Use path editor to add the path: File Set path …
M-files : script and function files (script) eg4.m
eg5_exercise1.m
Example – RLC circuit
R = 10 C
+
V L
–
Exercise 1:
Write an m–file to plot Z, Xc and XLversus
frequency for R =10, C = 100 uF, L = 0.01 H.
M-files : script and function files (script)
Example – RLC circuit
Total impedance is given by:
1
Z R j L
C
When XC XL Z R
1
o
LC
M-files : script and function files (script) eg4.m
eg5_exercise1.m
Example – RLC circuit
120
Z
Xc
100 Xl
80
60
40
20
0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
M-files : script and function files (script) eg6.m
Example – RLC circuit
R = 10 C
+
V L
–
For a given values of C and L, plot the following versus the frequency
a) the total impedance ,
b) Xc and XL
c) phase angle of the total impedance
for 100 < < 2000
M-files : script and function files (script) eg6.m
Example – RLC circuit
Magnitude
100
Mag imp
80
Xc
60 Xl
40
20
0
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Phase
100
50
-50
-100
0 200 400 600 800 1000 1200 1400 1600 1800 2000
M-files : script and function files (function)
• Function is a ‘black box’ that communicates with
workspace through input and output variables.
INPUT FUNCTION OUTPUT
– Commands
– Functions
– Intermediate variables
M-files : script and function files (function)
Every function must begin with a header:
function output=function_name(inputs)
Output variable
Must match the input variable
file name
M-files : script and function files (function)
• Function – a simple example
function y=react_C(c,f)
%react_C calculates the reactance of a capacitor.
%The inputs are: capacitor value and frequency in hz
%The output is 1/(wC) and angular frequency in rad/s
y(1)=2*pi*f;
w=y(1);
y(2)=1/(w*c);
File must be saved to a known path with filename the same as the
function name and with an extension ‘.m’
Call function by its name and arguments
help react_C will display comments after the header
M-files : script and function files (function) impedance.m
• Function – a more realistic example
function x=impedance(r,c,l,w)
%IMPEDANCE calculates Xc,Xl and Z(magnitude) and
%Z(angle) of the RLC connected in series
%IMPEDANCE(R,C,L,W) returns Xc, Xl and Z (mag) and
%Z(angle) at W rad/s
%Used as an example for IEEE student, UTM
%introductory course on MATLAB
if nargin <4
error('not enough input arguments')
end;
x(1) = 1/(w*c);
x(2) = w*l;
Zt = r + (x(2) - x(1))*i;
x(3) = abs(Zt);
x(4)= angle(Zt);
M-files : script and function files (function) eg7_fun.m
We can now add our function to a script M-file
R=input('Enter R: ');
C=input('Enter C: ');
L=input('Enter L: ');
w=input('Enter w: ');
y=impedance(R,C,L,w);
fprintf('\n The magnitude of the impedance at %.1f
rad/s is %.3f ohm\n', w,y(3));
fprintf('\n The angle of the impedance at %.1f rad/s is
%.3f degrees\n\n', w,y(4));