Introduction to MATLAB and Simulink

Download Report

Transcript Introduction to MATLAB and Simulink

An Introductory Course on
MATLAB and Simulink
Dr. Nik Rumzi Nik Idris
[email protected]
Department of Energy Conversion
FKE, UTM.
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
Built in functions
MATLAB
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

2
9
3
2
4
•Their names
can
contain
up
to
31
characters


 
9with
 a letter
•Must start
 
3
Variables are stored in workspace
Vectors and Matrices
How do we assign a value to a variable?

EDU» v1=3
v1 =
3
EDU» whos
Name
Size
Bytes Class
R
1x1
8 double array
EDU» i1=4
i1
1x1
8 double array
i1 =
v1
1x1
8 double array
4
Grand total is 3 elements using 24 bytes
EDU» R=v1/i1
EDU» who
R=
Your variables are:
0.7500
EDU»
R
EDU»
i1
v1
Vectors and Matrices

How do we assign values to vectors?
EDU» A = [1 2 3 4 5]
A =
1 2 3 4 5
EDU»
EDU» B = [4;6;8;12;14;16]
B =
10
12
14
16
18
EDU»

A row vector –
A
 1are 2 3
values
separated by
spaces
10 
12 
 
A column
B  –14 
vector
valuesare 
16
separated
 by

semi–colon
18 
(;)
4 5
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
EDU» c1 = linspace(0,(2*pi),100);
EDU» whos
Name
Size
c1
1x100
Bytes
800
Class
double array
Grand total is 100 elements using 800 bytes
EDU»
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
EDU» c2 = (0:0.0201:2)*pi;
EDU» whos
Name
Size
Bytes
Class
c1
1x100
800
double array
c2
1x100
800
double array
Grand total is 200 elements using 1600 bytes
EDU»
Vectors and Matrices

How do we assign values to matrices ?
EDU» A=[1 2 3;4 5 6;7 8 9]
A =
1
2
3
4
5
6
7
8
9
EDU»
Columns separated by
space or a comma
1 2 3 
 4 5 6


7 8 9
Rows separated by
semi-colon
Vectors and Matrices

How do we access elements in a matrix or a vector?
Try the followings:
EDU» A(2,3)
ans =
6
EDU» A(1,:)
ans =
1
2
EDU» A(:,3)
ans =
3
6
9
3
EDU» A(2,:)
ans =
4
5
6
Vectors and Matrices

Some special variables
EDU» 1/0
Warning: Divide by zero.
beep
ans =
pi ()
Inf
inf (e.g. 1/0)
i, j (
1
)
EDU» pi
ans =
3.1416
EDU» i
ans =
0+ 1.0000i
Vectors and Matrices

Arithmatic operations – Matrices
Performing operations to every entry in a matrix
EDU» A=[1 2 3;4 5 6;7 8
9]
A =
1
2
3
4
5
6
7
8
9
EDU»
Add and subtract
EDU» A+3
ans =
4
7
10
5
8
11
6
9
12
EDU» A-2
ans =
-1
2
5
0
3
6
1
4
7
Vectors and Matrices

Arithmatic operations – Matrices
Performing operations to every entry in a matrix
EDU» A=[1 2 3;4 5 6;7 8 9]
A =
1
2
3
4
5
6
7
8
9
EDU»
Multiply and divide
EDU» A*2
ans =
2
8
14
EDU» A/3
ans =
0.3333
1.3333
2.3333
4
10
16
6
12
18
0.6667
1.6667
2.6667
1.0000
2.0000
3.0000
Vectors and Matrices

Arithmatic operations – Matrices
Performing operations to every entry in a matrix
EDU» A=[1 2 3;4 5 6;7 8 9]
A=
1 2 3
4 5 6
7 8 9
EDU»
A^2 = A * A
Power
To square every element in A, use
the element–wise operator .^
EDU» A.^2
ans =
1
4
16
25
49
64
9
36
81
EDU» A^2
ans =
30
36
66
81
102
126
42
96
150
Vectors and Matrices

Arithmatic operations – Matrices
Performing operations between matrices
EDU» A=[1 2 3;4 5 6;7 8 9]
A =
1
2
3
4
5
6
7
8
9
A*B
A.*B
EDU» B=[1 1 1;2 2 2;3 3 3]
B =
1
1
1
2
2
2
3
3
3
1 2 3   1 1 1 
 4 5 6  2 2 2

 

7 8 9 3 3 3
 1x1 2x1 3x1 
 4 x 2 5x 2 6 x 2


 7 x3 8x3 9x3
=
14 14 14 
32 32 32 


50 50 50 
=
1 2 3
 8 10 12 


21 24 27 
Vectors and Matrices

Arithmatic operations – Matrices
Performing operations between matrices
A/B
A./B
?
 1/ 1 2 / 1 3 / 1
 4 / 2 5 / 2 6 / 2


7 / 3 8 / 3 9 / 3
=
1.0000 2.0000 3.0000
2.0000 2.5000 3.0000


2.3333 2.6667 3.0000
Vectors and Matrices

Arithmatic operations – Matrices
Performing operations between matrices
A^B
A.^B
??? Error using ==> ^
Matrix dimensions
must agree.
 11 21 31 
 2
2
2
4
5
6


73 83 93 


=
2
3 
 1
 16
25
36 


343 512 729
Vectors and Matrices

Arithmatic operations – Matrices
Example:
-j5
2-90o
10
Solve for V1 and V2
j10
1.50o
Vectors and Matrices

Arithmatic operations – Matrices
Example (cont)
(0.1 + j0.2)V1 – j0.2V2
- j0.2V1
+ j0.1V2
= -j2
= 1.5
0.1  j0.2  j0.2  V1 
 j2
=


  j0.2


V
j
0
.
1
1
.
5


2


 
A
x
=
y
Vectors and Matrices

Arithmatic operations – Matrices
Example (cont)
EDU» 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
EDU» y=[-2j;1.5]
y =
0- 2.0000i
1.5000
EDU» x=A\y
x =
14.0000+ 8.0000i
28.0000+ 1.0000i
EDU» x=y'/A'
x =
14.0000- 8.0000i 28.0000- 1.0000i
EDU»
Vectors and Matrices

Arithmatic operations – Matrices
Example (cont)
EDU» V1= abs(x(1,:))
V1 =
16.1245
EDU» V1ang= angle(x(1,:))
V1ang =
0.5191
V1 = 16.1229.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
abs
angle sqrt
round floor
log
At any time you can use the command
help to get help
e.g. EDU>>help sin
Built in functions (commands)
EDU» a=linspace(0,(2*pi),10)
a =
Columns 1 through 7
0
0.6981
1.3963
2.0944
2.7925
3.4907
0.8660
0.3420
-0.3420
4.1888
Columns 8 through 10
4.8869
5.5851
6.2832
EDU» b=sin(a)
b =
Columns 1 through 7
0
0.6428
0.9848
-0.8660
Columns 8 through 10
-0.9848
EDU»
-0.6428
0.0000
Built in functions (commands)
Vector functions – operate on vectors returning
scalar value
e.g. max min
mean prod sum
length
EDU» max(b)
EDU» a=linspace(0,(2*pi),10);
ans =
EDU» b=sin(a);
0.9848
EDU» max(a)
ans =
6.2832
EDU» length(a)
ans =
10
EDU»
Built in functions (commands)
Matrix functions – perform operations on
matrices
EDU» help elmat
EDU» 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
EDU» x=rand(4,4)
EDU» 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
0.4860 0.0185 0.7919 0.4057
EDU» xinv=inv(x)
xinv =
1.0000 0.0000 0.0000 0.0000
0
1.0000
0.0000
0
1.0000 0.0000
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
EDU»
0
0.0000
Built in functions (commands)
From our previous example,
0.1  j0.2  j0.2  V1 
 j2
=


  j0.2


V
j
0
.
1

  2
 1. 5 
A
EDU» x=inv(A)*y
x =
14.0000+ 8.0000i
28.0000+ 1.0000i
x
=
y
Built in functions (commands)
Data visualisation – plotting graphs
EDU» help graph2d
EDU» help graph3d
e.g.
plot
polar loglog
semilog
plotyy
mesh
surf
Built in functions (commands)
eg1_plt.m
Data visualisation – plotting graphs
Example on plot – 2 dimensional plot
Example on plot – 2 dimensional plot
EDU» x=linspace(0,(2*pi),100);
EDU» y1=sin(x);
Add title, labels and legend
EDU» y2=cos(x);
EDU» plot(x,y1,'r-')
title
xlabel ylabel legend
EDU» hold
Current plot held
EDU» plot(x,y2,'g--')
EDU»
Use ‘copy’ and ‘paste’ to add to your
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)
cos(x)
0.8
0.6
y1 and y2
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
1
2
3
4
angular frequency (rad/s)
5
6
7
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 (2ft)
for f = 2
when a and t are varied from 0.1 to 7 and 0.1 to 2, respectively
EDU» [t,a] = meshgrid(0.1:.01:2, 0.1:0.5:7);
EDU» f=2;
EDU» Z = 10.*exp(-a.*0.4).*sin(2*pi.*t.*f);
EDU» surf(Z);
EDU» figure(2);
EDU» 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
EDU» [x,y] = meshgrid(-3:.1:3,-3:.1:3);
EDU» 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);
EDU» 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 &
output
Saved with extension “.m”
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. EDU>> 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:
When
X C  XL
1
o 
LC
M-files : script and function files (script)
eg4.m
eg5_exercise1.m
Example – RLC circuit
120
Z
Xc
Xl
100
80
60
40
20
0
0
200
400
600
800
1000
1200
1400
1600
1800
2000
eg6.m
M-files : script and function files (script)
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
Xc
Xl
80
60
40
20
0
0
200
400
600
800
1000
1200
1400
1600
1800
2000
1200
1400
1600
1800
2000
Phase
100
50
0
-50
-100
0
200
400
600
800
1000
M-files : script and function files (function)

Function is a ‘black box’ that communicates with
workspace through input and output variables.
INPUT
FUNCTION
– Commands
– Functions
– Intermediate variables
OUTPUT
M-files : script and function files (function)
Every function must begin with a header:
function output=function_name(inputs)
Output variable
Must match the
file name
input variable
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));
Simulink
Used to model, analyze and simulate dynamic
systems using block diagrams.
Provides a graphical user interface for constructing
block diagram of a system – therefore is easy to use.
However modeling a system is not necessarily easy !
Simulink
Model – simplified representation of a system – e.g. using
mathematical equation
We simulate a model to study the behavior of a system –
need to verify that our model is correct – expect results
Knowing how to use Simulink or MATLAB does not
mean that you know how to model a system
Simulink
Problem: We need to simulate the resonant circuit
and display the current waveform as we change the
frequency dynamically.
10 
i
Varies 
from 0 to
2000 rad/s
100 uF
+
v(t) = 5 sin t
0.01 H
–
Observe the current. What do we expect ?
The amplitude of the current waveform will become
maximum at resonant frequency, i.e. at  = 1000 rad/s
Simulink
How to model our resonant circuit ?
10 
i
100 uF
+
v(t) = 5 sin t
0.01 H
–
Taking KVL around the loop,
di 1
v  iR  L 
idt
dt C

Simulink
Differentiate wrt time and re-arrange:
2
1 dv di R d i
i

 2
L dt dt L dt LC
Taking Laplace transform:
sV R
I
2
 sI  s I 
L L
LC
sV  2 R
1
 I s  s  
L
L
LC 

Simulink
Thus the current can be obtained from the voltage:




s(1/ L)
I  V

R
1
 s2  s  
L
LC 

V
s(1/ L)
R
1
2
s  s
L
LC
I
Simulink
Start Simulink by typing simulink at Matlab prompt
Simulink library and untitled windows appear
It is where we
obtain the blocks to
construct our model
It is here where we
construct our model.
Simulink
Constructing the model using Simulink:
‘Drag and drop’ block from the Simulink library
window to the untitled window
1
simout
s+1
Sine Wave
Transfer Fcn
To Workspace
Simulink
Constructing the model using Simulink:
s(1/ L)
R
1
2
s  s
L
LC
s(100)
2
6
s  1000 s  1 10
100s
s2+1000s+1e6
Sine Wave
Transfer Fcn
v
To Workspace1
i
To Workspace
Simulink
eg8_sim.mdl
We need to vary the frequency and observe the current
5
Amplitude
Ramp
v
To Workspace3
w
To Workspace2
1
1000
Constant
s
Integrator
Dot Product3
100s
s2+1000s+1e6
sin
Elementary
Math
Dot Product2
Transfer Fcn1
i
To Workspace
Simulink
1
0.5
0
-0.5
-1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
5
0
-5
Simulink
eg9_sim.mdl
The waveform can be displayed using scope – similar
to the scope in the lab
5
Constant1
100s
2000
Constant
0.802
Slider
Gain
1
sin
s
Dot Product2
Integrator Elementary
Math
s2+1000s+1e6
Scope
Transfer Fcn
Simulink
Masking
Enable a user to customize a dialog for a block
Change numerical values to variables
Select the block  edit  edit mask  initialize
Simulink
Masking
eg10_sim_m.mdl
Simulink
PROBLEM: Suppose we are interested in the response
of the capacitor voltage, vc(t), to a step voltage input
(Vs). What is the waveform of vc as we vary R ?
i
Vs
10 
100 uF
+ vc –
0.01 H
Simulink
We need to mathematically model the circuit, i.e. we
need to obtain a transfer function between vc and vs
Taking KVL around the loop:
1
di
Vs  iR 
iL
C
dt

Assume the solution
R di i
0 2 

L dt LC
dt
i = Aest
R
1
Ae  s  s    0
L
LC 

st  2

d 2i
1
 2 R
s  s    0
L
LC 

Characteristic equation
Simulink
Response will depends on the solution of the
characteristic equation
s1  
2
R
1
R
   
2L
 2L  LC
2
R
1
R
s2      
2L
 2L  LC
2
1
R

 
 2L  LC
2
1
R
  
 2L  LC
Critically damped
2
1
R
  
 2L  LC
What is the critical value of R ?
Critical value of R = 20 
Overdamped
Underdamped
Simulink
We know that for a capacitor,
Vc 1

I sC
Vs
s(1/ L)
R
1
s2  s 
L
LC
I
1
sC
Vc
Simulink
We may look at the response in two ways:
Method 1
By displaying the response (Vc) using scope as we change R
Method 2
By displaying the response (Vc) using 3–D plot with t and R as the
variables
Simulink
Method 1
•Mask the Vc/V transfer function with R as the variable
•Use Signal Generator as a square wave voltage source, Vs
•Set the stop time to 9999 and simulate the system.
•Observe the response (Vc) using scope –
Note: R can be changed even when the simulation is
running
Simulink
V
s(1/ L)
R
1
s2  s 
L
LC
I
1
sC
Vc
Simulink
eg11_sim_square.mdl
Simulink
Method 2
•Simulink file can be run using MATLAB command, sim
•We run the system with different values of R
•Save the results for each simulation
•Plot the results using mesh
Simulink
sim_step_3d.m
eg11_sim_step_3D.mdl
for i=1:40,
r=5+i*0.5;
set_param('eg11_sim_step_3D/Subsystem/Transfer Fcn','Denominator','[1 r*100 1e6]');
sim('eg11_sim_step_3D');
for j=1:400,
out(i,j)=vc(j,1);
end;
end;
Note: before we can run sim_step_3d, we need to open
eg11_sim_step_3D
Simulink
Reference
Internet – search engine
 Mastering MATLAB 6 (Prentice Hall)

– Duane Hanselman
– Bruce Littlefield