MATLAB Instructional Powerpoint Slides

Download Report

Transcript MATLAB Instructional Powerpoint Slides

Introduction to
MATLAB and Simulink
Outline

Section I (Jan 30th, 2016)
◦ Background
◦ Basic Syntax and Commands
◦ Linear Algebra
◦ Loops

Section II (Feb 6st, 2016)
◦ Graphing & Plots
◦ Scripts and Functions

Section III (Feb 20th, 2016)
◦ Linear & System of Equations Solving
◦ ODE Solving

Section IV (Mar 5th, 2016)
◦ Simulink
Section I
January30th, 2015
◦
◦
◦
◦
Background
Basic Syntax and Commands
Linear Algebra
Loops
Background


MATLAB = Matrix Laboratory (developed by The MathWorks).
Opening MATLAB
Working Path
Command
History
Command
Window
Working
Memory
Variables




Have not to be previously declared
Variable names can contain up to 63 characters
Variable names must start with a letter followed by letters, digits, and
underscores( Valid: x1 = 5, Invalid: 1x = 5)
Variable names are case sensitive (a1 does NOT equal A1)
Operators

EX: Using command window
 >> x = 5; % this is used as a comment
 >> y = 3;
 >> z = x + y
z=8


Semicolon (;) : Suppresses output
Percentage (%) : Commenting. Only good for that line
MATLAB Special Variables
ans
Default variable name for results
pi
Value of pi number (3.14)
eps
Smallest incremental number
inf
Infinity
NaN
Not a number e.g. 0/0
realmin
The smallest usable positive real number
realmax
The largest usable positive real number
i,j
Imaginary unit
MATLAB Assignment & Operators
Assignment
=
a = b (assign b to a)
Addition
+
a+b
Subtraction
-
a-b
Multiplication
*
or.* a*b or a.*b
Division
/
or ./ a/b or a./b
Power
^
.^ a^b or a.^b
MATLAB Matrices

MATLAB treats all variables as matrices. For our purposes a
matrix can be thought of as an array, in fact, that is how it is
stored.

Vectors are special forms of matrices and contain only one row
OR one column.

Scalars are matrices with only one row AND one column
MATLAB Matrices

A matrix with only one row is called a row vector. A row vector can be
created in MATLAB as follows (note the commas):
» rowvec = [12 , 14 , 63]
rowvec =
12 14 63

A matrix with only one column is called a column vector. A column vector can
be created in MATLAB as follows (note the semicolons):
» colvec = [13 ; 45; -2]
colvec =
13
45
-2
MATLAB Matrices

A matrix can be created in MATLAB as follows (note the commas AND
semicolons):
» matrix = [1 , 2 , 3 ; 4 , 5 ,6 ; 7 , 8 , 9]
matrix =
123
456
789
Index

MATLAB index starts with 1, NOT 0!

Vector Index:
◦ a = [22 17 7 4 42]
 a(1) = 22
 a(3) = 7

Matrix Index:
◦ a = [7 12 42; 5 1 23; 4 9 10];
 a(1, 3) = 42
 a(3, 2) = 9
Some matrix functions in MATLAB
X = ones(r,c)
Creates matrix full with ones
X = zeros(r,c)
Creates matrix full with zeros
A = diag(x)
Creates squared matrix with vector x in diagonal
[r,c] = size(A)
Return dimensions of matrix A
X = A’
Transposed matrix
X = inv(A)
Inverse matrix squared matrix
X = pinv(A)
Pseudo inverse
d = det(A)
Determinant
[X,D] = eig(A)
Eigenvalues and eigenvectors
[U,D,V] = svd(A)
singular value decomposition
Dot Operator
For scalar operations, nothing new is needed. Example:
a = 5; b = 3; ==> c = a*b %c = 15
 For element operations, a dot must be used before the operator.
 Note: Dot operator not the same as dot product!


Example:
◦
◦
◦
◦

a = [1 2 3 4];
b = [5 6 7 8];
c = a*b
Result: ??? Error using ==> mtimes
inner matrix dimensions must agree
Now, try:
◦ c = a.*b
◦ Result:

%notice the dot!
c=[5 12 21 32]
Notice what it is doing: a(1)*b(1), a(2)*b(2), etc.
Vector Products
Consider & generate two random 3*1 vectors, A & B
A=rand(3,1) , B=rand(3,1)
Dot Product


Cross Product
Check Dimensions

◦ A*B
◦ A*B’
◦ A’*B
By definition

Use MATLAB command
>> C=cross(A,B)
Use MATLAB command
>> C=dot(A,B)

A(2)*B(3)-A(3)*B(2)

A(3)*B(1)-A(1)*B(3)

A(1)*B(2)-A(2)*B(1)
Loops

Loop statements do not need parenthesis. The statements are
recognized via tabs.

3 general types of loops:
◦ If/else/elseif loops
◦ For loops
◦ While loops

There is a 4th type, called nested loop, that can be any of the above
3 (and any combinations of them).
If/else/elseif Loops

The condition must be previously defined!
For Loops



Counter variable does not have to be i; it can be any variable
Iterations can be tightly controlled with min:stepsize:max.
No need to pre-define the counter because you are declaring in the
for loop itself!
for i=1:10
statement
end
While Loops


As long as output of condition is a logic true, it will continue
looping until the condition becomes false.
BE CAREFUL OF INFINITE LOOPS.
while condition
statement
end
Nested Loops


Can use a mix of the different types of loops.
Very useful for performing algorithm/operations on vectors and
matrices.
Examples

Write a code to print out integer numbers from 5 to 36

Write a code to print out integers between 45 to 109 which are divisible to 3

Write a code to print out integers between 45 to 109 which are divisible to 5

Write a code :
◦ If n is divisible to 3 print “divisible to 3”
◦ elseIf n is divisible to 5 print “divisible to 5”
◦ Elseif n is divisible by 5 and 3 print “divisible by 15”
Section II
Feb 6st, 2016
◦ Graphing & Plots
◦ Scripts and Functions
◦ Linear & System of Equations Solving
Plots

plot –plot(x,y,linespec)
◦ x and y vectors must be same length!

subplot –subplot(m,n,p) where mxn matrix, p =
current graph
figure –creates new window for graph
 title –creates text label at top of graph
 xlabel/ylabel–horizontal and vertical labels for
graph

Example
x=0:pi/100:2*pi;
 y=sin(x);
 figure;
 plot(x,y)

◦
◦
◦
◦
xlabel
ylabel
title
figure
example
x= 0:pi/100:2*pi;
 y1=sin(x);
 y2=sin(x-0.25);
 y3=sin(x-0.5);

figure;
 plot(x,y1,x,y2,’--’,x,y3,’:’);
 legend

subplot

subplot –subplot(m,n,p) where mxn matrix, p = current graph
Axis-specific



Helps focus on what is important on the graph.
Change only the x or y axis limits:
◦ xlim([xminxmax]) or ylim([yminymax])
◦ min and max can be positive or negative.
example
Some useful commands
Grid on
 Hold on
 Legend


Plot3 : example
◦ t=0:pi/50:10*pi;
◦ st=sin(t);
◦ ct=cos(t)
◦ figure;
◦ plot3(st,ct,t)
plotyy

2D line plots with y-axis on both left and right side
◦ [AX,H1,H2]=plotyy(x1,y1,x2,y2)
Scripts & functions

Two kind of M-files:
◦ Scripts
◦ Functions:
 With parameters and returning values
 Only visible variables defined inside the function or
parameters
 Usually one file for each function defined
 Structure:
Function example

In function:
◦ function y=average(x)
◦ y=sum(x)/length(x);
◦ end

In script:
◦ z=1:99;
◦ average(z)
Polynomials

We can use an array to represent a polynomial. To do so we use list
the coefficients in decreasing order of the powers. For example
x3+4x+15 will look like [1 0 4 15]

To find roots of this polynomial we use roots command. roots ([1 0
4 15])

To create a polynomial from its roots poly command is used.
poly([1 2 3]) where r1=1, r2=2, r3=3

To evaluate the new polynomial at x =5 we can use polyval
command. polyval([ 1 -6 11 -6], 5)
Systems of Equations

Consider the following system of equations
◦ x+5y+15z=7
◦ x-3y+13z=3
◦ 3x-4y-15z=11

One way to solve this system of equations is to use matrices. First,
define matrix A:
◦ A=[1 5 15; 1 -3 13; 3 -4 15];

Second, matrix b:
◦ b=[7;3;11];

Third, we solve the equation Ax=b for x, taking the inverse of A and
multiply it by b:
◦ x=inv(A)*b

Note that we cannot solve equation Ax=b by dividing b by A because
vectors A and b have different dimensions!
Section 3
MATLAB
February 20th, 2016
◦ Symbolic Solving
◦ Systems of Equations
◦ ODE Solving
Farhad Goodarzi
Systems of Equations

Consider the following system of equations
◦ x+5y+15z=7
◦ x-3y+13z=3
◦ 3x-4y-15z=11

One way to solve this system of equations is to use matrices. First,
define matrix A:
◦ A=[1 5 15; 1 -3 13; 3 -4 15];

Second, matrix b:
◦ b=[7;3;11];

Third, we solve the equation Ax=b for x, taking the inverse of A and
multiply it by b:
◦ x=inv(A)*b

Note that we cannot solve equation Ax=b by dividing b by A because
vectors A and b have different dimensions!
Symbolic toolbox

Use syms command
◦ syms F3 x a b
◦ F3=sqrt(x)
◦ Int(F3,a,b)
Symbolic toolbox example

Define functions
F1=6x3-4x2+bx-5, F2= Sin (y),
and
F3= Sqrt(x).
Use int() function to determine:
Solving ODE with dsolve, 1st order

First order equations
◦ y’=xy
 y=dsolve(‘Dy=y*x’,’x’)
 y=dsolve(‘Dy=y*x’,’y(1)=1’,’x’)
◦ Or
 eq1=‘Dy=y*x’;
 y=dsolve(eq1,’x’);
◦ Issues
 our expression for y(x) isn’t suited for array operations: vectorize()
 y, as MATLAB returns it, is actually a symbol : eval()
◦ Plotting
 x = linspace(0,1,20);
 z = eval(vectorize(y));
 plot(x,z)
Solving ODE with dsolve, 2nd order

Second order equations
◦ EQ:
 eqn2 = ’D2y + 8*Dy + 2*y =cos(x)’;
 inits2 = ’y(0)=0 , Dy(0)=1’;
 y=dsolve(eqn2,inits2,’x’)
◦ Plotting
 x = linspace(0,1,20);
 z = eval(vectorize(y));
 plot(x,z)
Solving ODE with dsolve, systems

Systems of equations
◦ EQs:




[x,y,z]=dsolve(’Dx=x+2*y-z’,’Dy=x+z’,’Dz=4*x-4*y+5*z’)
inits=’x(0)=1,y(0)=2,z(0)=3’;
[x,y,z]=dsolve(’Dx=x+2*y-z’,’Dy=x+z’,’Dz=4*x-4*y+5*z’,inits)
Notice that since no independent variable was specified, MATLAB
used its default, t.
◦ Plotting
 t=linspace(0,.5,25);
 xx=eval(vectorize(x));
 yy=eval(vectorize(y));
 zz=eval(vectorize(z));
 plot(t, xx, t, yy, t, zz)
Solving ODE with dsolve, systems

solve the given differential equations symbolically.
ODE Solving Numerically

Defining an ODE function in an M-file

Solving First-Order ODEs

Solving Systems of First-Order ODEs

Solving higher order ODEs
Numerical methods are used to solve initial value
problems where it is difficult to obtain exact solutions

MATLAB has several different built-ins
functions for numerical solution of ODEs
Solvers
Solving first-order ODEs

Define the function M-file





function y_dot=EOM(y,t)
global alpha gamma
y_dot=alpha * y - gamma * y^2;
end
Make a script M-file







global alpha gamma
alpha=0.15;
gamma=3.5;
y0=1;
[y t]=ode45(@EOM,[0 10],y0);
plot(t,y);
Solving systems of ODEs

Example

Create function containing the equations

Change the error tolerance using odeset

Plotting the columns of returned vector
Solving a Stiff system

Equations

Create the function

Ode and plotting
Example

Use “ode45” to solve the following differential equation
and plot y(x) in the interval of [0,6π]. Put your name in
the plot title.
Solving higher-order ODE
Project: Simple pendulum
 Equation of motion is given by:



2nd order Nonlinear ODE
Convert the 2nd order ODE to standard form
Simple Pendulum

Initial conditions and constants

Coding
◦ Make a function M-file for equation of motion
 function z_dot=EOM_pendulum(t,z)

global G L

theta=z(1);

theta_dot=z(2);

theta_dot2=-(G/L)*sin(theta);

z_dot=[theta_dot;theta_dot2];
 end
◦ Make a script M-file to run the code






global G L
G=9.8;
L=2;
tspan=[0 2*pi];
inits=[pi/3 0];
[t, y]=ode45(@EOM_pendulum,tspan,inits);
Lorenz Equations

Initials and constants, T=[0 20]
Plot x vs. z , check if you
get same results as

Section 4
March 5th, 2016
◦ Simulink
Simulink

>> simulink
◦ Continuous and discrete dynamics blocks, such as Integration,
Transfer functions, Transport Delay, etc.
◦ Math blocks, such as Sum, Product, Add, etc
◦ Sources, such as Ramp, Random Generator, Step, etc
Useful blocks

Math and Control

inputs and outputs
Example

Open a new window and drag the following blocks into
that file

Run the simulation and double click on the scope to see
the results
Example

Open a new window and drag the following blocks into
that file

Run the simulation and double click on the scope to see
the results
Example

Open a new window and drag the following blocks into
that file

Run the simulation and double click on the scope to see
the results
simple model

Build a Simulink model that solves the differential equation
x  3 sin 2t 
Initial condition
 First, sketch a simulation diagram of this mathematical model
(equation)
 Input is the forcing function 3sin(2t)
 Output is the solution of the differential equation x(t)


Now build this model in Simulink
simple model

Build a Simulink model that solves the differential
equation
Double-click on the
Sine Wave block to
set amplitude = 3
and freq = 2.
This produces the
desired input of
3sin(2t)
simple model

It should look like this, change the initial condition in
integrator to -1
Example – Toy Train


consisting of an engine and a car. Assuming that the train
only travels in one direction, we want to apply control
to the train so that it has a smooth start-up and stop,
along with a constant-speed ride
The mass of the engine and the car will be represented
by M1 and M2, respectively. The two are held together
by a spring, which has the stiffness coefficient of k. F
represents the force applied by the engine, and the
Greek letter, mu, represents the coefficient of rolling
friction.
Example – Toy Train

System
Example – Toy Train

System
Example – Toy Train

Build this
Example – Toy Train

Before running the model, we need to assign numerical
values to each of the variables used in the model. Create an
new m-file and enter the following commands.

M1=1;
M2=0.5;
k=1;
F=1;
mu=0.002;
g=9.8;






Execute your m-file to define these values. Simulink will
recognize MATLAB variables for use in the model.
Pendulum Example

Try the following blocks