You are on page 1of 59

MATLAB/Simulink

Basic MATLAB -
matrices
operators
script and function files
flow control
plotting

Basics of Simulink -
state-space models (1st order ordinary diff eqns)
setting integration properties
setting initial conditions
input types
getting data to the workspace
Basic MATLAB

optional windows

workspace
current directory
type commands here

command window

screen shot of the Matlab window
Matlab’s help features

type “help” at the command prompt
and Matlab returns a list of help topics
Matlab’s help features

>> help lang

Matlab’s language constructs
Matlab’s help features

>> help for

how to use Matlab’s “for” statement
Matlab’s help features
you can also access “on-line” help by clicking the
question mark in the toolbar

separate window
MATLAB Variables

all variables are stored in 32bit floating point format

no distinction between real and integer

>>a = 3;
same assignment for “a”
>>a = 3.0;

Matlab is case sensitive
>>A=3;
A≠a
>>a=2;
MATLAB Variables

can use numbers and underscore in variable names
>>case34=6.45;
OK
>>case_34=6.45;

names must start with a letter

>>34case=23.45; results in a syntax error

string (text) variables enclosed in single quotes.
The variable is stored as array of characters
>>title=‘This is the title’;
MATLAB Variables

if a variable is defined,
typing the variable name returns its value

>>a=45.57;

>>a

a=
45.57 Matlab returns the value

to clear a variable from memory
>>a=4
>>clear a
MATLAB Variables

Matlab will “echo” commands unless a semi-colon is used

>>a=23.2;
>>

>>a=23.2
a=
23.2 Matlab echoes the command
>>
MATLAB Variables
Vectors
column vectors row vectors
⎧1 ⎫
⎪ ⎪
a = ⎨2 ⎬ a = {1 2 3}
⎪3 ⎪
⎩ ⎭
>>a=[1;2;3]; >>a=[1,2,3];
>>a >>a
a= a=
1 1 2 3
2
3
use semi-colon use comma
to separate rows to separate columns
MATLAB Variables
Matrices

⎡1 2 3⎤
2-dimensional matrices a=⎢ ⎥
⎣ 4 5 6 ⎦

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

again, separate columns with commas and rows with semi-colons
MATLAB Variables
Indexing Matrix elements

A vector is a special type of matrix

row vector is a 1 x n matrix, 1 row n columns

column vector is a n x 1 matrix, n rows 1 column

>>a=[1,2,3];
>>a(2) could also reference by a(1,2)
ans =
2 note, a(2,1) would produce an error
because “a” only has one row
MATLAB Variables
Indexing Matrix elements

more examples

⎡1 2 3⎤
a=⎢ ⎥ >>a=[1,2,3;4,5,6];
⎣ 4 5 6 ⎦

assigning
addressing
>>a(2,2)=9;
>>a(2,3) >>a
ans = a=
6 1 2 3
4 9 6
MATLAB Variables
complex-valued numbers

Typically, the variable “i” or “j” is used to represent the
complex variable; e.g.

i = −1

Then, a complex number is represented as

z = a + ib Re(z) = a

Im(z) = b
MATLAB Variables
complex-valued numbers

Unless i or j has been previously defined, Matlab assigns
i and j the complex variable value

In Matlab, a complex variable is represented in the
following format

(assuming all variables are cleared)
>>z=23+i*56; >>z=23+j*56;
>>z >>z
z= z=
23.00 + 56.00i 23.00 + 56.00i

Matlab always uses the symbol “i” to represent a complex number
MATLAB Variables
complex-valued numbers

What happens in this case? What happens in this case?
>>i=3; >>a=sqrt(-1);
>> z=23+i*56; >>z=23+a*56;
>>z >>z
z= z=
MATLAB Variables
complex-valued numbers

Note, a real-valued number is a special case of a
complex-valued number

assigning any element of a matrix as complex-valued
makes the entire matrix complex-valued

>>a=[1,2]; >>a(1)=1+i*5;
>>a >>a
a= a=
1 2 1.00+5.00i 2.00+0.00i
MATLAB Variables

Advanced data types
n-dimensional arrays

structures

cell arrays
MATLAB Operations

Basic operations
addition +
subtraction -
multiplication *
division
right division /
?
left division \

>>a=3;b=4;
>>c1=a/b; c1=0.75
so, be careful!
>>c2=a\b; c2=1.3333….
MATLAB Operations
Mixed Real and Complex valued Variables

if both variables are real-valued, a real-valued result is obtained

if one variable is complex-valued, Matlab recasts the real
variable as complex and then performs the operation. The
result is complex-valued

however, the type casting is done internally, the real-valued
variable remains real after the operation
MATLAB Operations
Other (Scalar) Operations
Math representation Matlab interpretation
z = yx >>z=y^x;
y = ex >>y=exp(x);
y = ln(x) >>y=log(x);
y = log(x) >>y=log10(x)

y = sin(x) y = sin −1 (x) >>y=sin(x); >>y=asin(x);
y = cos(x) y = cos −1 (x) >>y=cos(x); >>y=acos(x);
y = tan(x) y = tan −1 (x) >>y=tan(x); >>y=atan(x);
MATLAB Operations
Examples

>>y=x^0.5;
y= x >>y=x^(1/2);
>>y=sqrt(x);

All variables in the preceding operations can be
real or complex, negative or positive

for x < 0, y is complex. Matlab assumes you allow complex
valued numbers. If y is not to be complex, you must
provide error checking.
MATLAB Operations
Matrices

Only matrices of the same dimension can be added and subtracted

For multiplication, the inner dimensions must be the same

⎡4 5⎤
⎡1 2 3⎤ ⎡2 3 4⎤
A=⎢ ⎥ B=⎢ ⎥ C = ⎢6 7 ⎥
⎣ 4 5 6 ⎦ ⎢ ⎥
⎣ 5 6 7 ⎦ ⎢⎣8 9 ⎥⎦

No error Error
>>D=A+B; >>D=A+C;
>>D=A-B; >>D=A*B;
>>D=A*C; Matrix multiplication
>>D=B*A;
>>D=C*A; not commutative
MATLAB Operations
Left(\) and Right(/) Matrix “division”

Math representation Matlab interpretation

C = A −1B >>C=A\B;

C = BA −1 >>C=B/A;

Remember, A must be square and full rank
(linearly independent rows/columns)
MATLAB Operations
Matrix Transpose

Math representation Matlab interpretation
C = AT >>C=A’;
For complex-valued matrices, complex conjugate transpose
⎡1 2 3⎤
A=⎢ ⎥ a = [1 + j2 3 + j4]
⎣ 4 5 6 ⎦
>>B=A’; >>b=a’;

⎡1 4⎤
B = ⎢2 5⎥ ⎡1 − j2 ⎤
⎢ ⎥ b=⎢ ⎥
⎣ 3 − j4 ⎦
⎢⎣ 3 6 ⎥⎦
MATLAB m-files

Two types of m-files

script files
collection of commands that Matlab executes
when the script is “run”

function files
collection of commands which together
represent a function, a procedure or a method

Both types are separate files with a “.m” extension
MATLAB m-files
To create an m-file, open the Matlab text editor

Click on the “page” icon

The Matlab text editor window will open
MATLAB m-files
Script Files

On the command line In the script file named test.m
>>x=3.0;
>>y=x^2;
>>y
y =
9.0
>>
On the command line
>>test
y =
9.0
>>
MATLAB m-files
Script Files

script files share the workspace memory

>>x=5.0; test.m script
>>test
>>y
y =
25.0
>>
MATLAB m-files
Script Files

script files can call other script files
inner.m script

>>outter
y =
outter.m script
36.0
>>
MATLAB m-files
Function Files

Matlab identifies function files from script files by
using the “function” and “return” keywords

the name of the function file must be
the same name as the function
MATLAB m-files
Function Files

The function file x2.m

>>r=3; >>h=x2(4.2);
>>d=x2(r); >>h
>>d h =
d = 17.64
9.0 >>
>>
MATLAB m-files
Function Files

Multiple Inputs and Outputs

outputs in square brackets, [ ] inputs in parentheses ( )
MATLAB m-files
Function Files

variables created in the function are not retained
in the workspace, except for the output variables

the function does not have access to workspace
variables, except for the inputs

variables passed to the function are “copies” of the
workspace variables. Changing their value inside the
function has no effect on their value in the workspace.
MATLAB Flow Control
The “while” and “if” statements

while expression if expression if expression
statements statements statements1
end end else
statements2
end

Matlab evaluates expression as logical “true” or “false”
“false” equivalent to zero
“true” equivalent to any non-zero number

statements, any valid Matlab command
MATLAB Flow Control
evaluating expression

any valid equation conditional operators
a=4; == equal to
b=5; < less than
c=5; > greater than
if a+b “True” <= less than or equal to
if b-c “False” >= greater than or equal to
~= not equal to
watch out for round-off
and word length error logical operators
if sin(0) “False” & and
if sin(pi) “True” | or
sin(pi) = 1.22e-16
while(3<=a)&(a<=5)
MATLAB Flow Control
The “for” statement

for index = start : [increment :] end
statements
end
index, start, increment, and end do not need to be integer valued

increment is optional, if increment is not specified
increment defaults to 1

index can be incremented positive (increment > 0) or
negative (increment < 0)

loop stops when index > end (or index < end)
MATLAB Flow Control
example

script file to cycle through x values

function file to generate the y values
MATLAB Plotting
Basic 2D plotting functions
plot(x1,y1[,x2,y2,x3,y3.....])
xlabel(‘x axis name’)
ylabel(‘y axis name’)
title(‘graph name’)

Additional functions
grid on
grid off
axis([xmin,xmax,ymin,ymax])
MATLAB Plotting
example y = sin(t)

the “plot” function alone
MATLAB Plotting
example y = sin(t)

script file to generate
a graph of y = sin(t)
MATLAB Plotting
example y = sin(t)

function file to generate
a graph of y = sin(t)
>>graphsin
>>
MATLAB Plotting
Adding a Legend for multiple graphs

“legend” remembers
the order the graphs
were plotted
Simulink Basics

click the Simulink button

the Simulink window
Simulink Basics

create a new model or
click the “new” button open an existing one

the simulink model window
Simulink Example

Best thing to do is to go through an example

2nd order, constant coefficient, linear differential equation

y + c1y& + c0 y = b0f (t)
&&

Response to a “step” command
Simulink Example
Get an equivalent block diagram for the system

use mouse to drag blocks into
the model window and to
connect blocks with arrows

use integrators to get dy/dt and y
Simulink Example

add gain and summer blocks
Simulink Example

add the step input block
Simulink Example

add the output block
Simulink Example
Now, double click the blocks to open and set the block’s parameters

set gain value

set initial condition

set variable name
set output format to “array”
Simulink Example
To set the simulation parameters….

select Simulation -> Simulation Parameters

set Start and Stop time (in seconds)
set numerical integration type
Simulink Example
Time to run the simulation

click the “run” button to begin the simulation

when the simulation is complete, “Ready” appears at the bottom
Simulink Example

Simulink will automatically save a variable named “tout” to
the workspace.

This variable contains the time values used in the simulation,
important for variable time integration types

Simulink also will create the output variable(s) you specified
Simulink Example
>>plot(tout,yoft)

graph of the step response
Simulink Example
Another approach to solving the 2nd order single DOF
problem, is to cast it as a 1st order 2 DOF problem

x1 = y x& 1 = x 2
x 2 = y& x& 2 = bo f − c1x 2 − co x1

In Matrix (or State Space) form…. x& = Ax + Bu
y = Cx

⎧ x1 ⎫ ⎡ 0 1 ⎤ ⎡0⎤
x=⎨ ⎬ A=⎢ B=⎢ ⎥
⎩x 2 ⎭ ⎣ −co −c1 ⎥⎦ ⎣ bo ⎦
u=f C = [1 0]
Simulink Example
1st Order State-Space Models
Simulink Example
Multi Input Multi Output Systems
use Mux and Demux blocks to combine and extract vector signals

specify number of signals