DCEE 24 Lab Activity 1
DCEE 24 Lab Activity 1
DCEE 24
Feedback & Control Systems
Lab Experiment 1: Using Octave/MATLAB for Control Systems
Objectives: This lab provides an introduction to MATLAB in the first part. The lab also
provides tutorial of polynomials, script writing and programming aspect of MATLAB from
control systems view point.
List of Equipment/Software
Following equipment/software is required:
∙ Octave/MATLAB
Category Soft-Experiment
Deliverables
A complete lab report including the following:
___________________________________
MATLAB TUTORIAL
___________________________________
___________________________________
___________________________________
Reference: Engineering Problem Solving Using MATLAB, by Professor Gary Ford, University of California, Davis. ___________________________________
___________________________________
___________________________________
■ Variables
___________________________________
___________________________________
___________________________________
Introduction ___________________________________
⮚ What is MATLAB ?
• MATLAB is a computer program that combines computation and
visualization power that makes it particularly useful tool for ___________________________________
engineers.
• MATLAB is an executive program, and a script can be made with
a list of MATLAB commands like other programming language.
___________________________________
⮚ MATLAB Stands for MATrix LABoratory.
• The system was designed to make matrix computation particularly easy.
• perform calculations
• generate plots
___________________________________
• develop and manage files for use with MATLAB.
___________________________________
___________________________________
___________________________________
MATLAB
Environment ___________________________________
To start MATLAB:
START 🡺 PROGRAMS 🡺 ___________________________________
MATLAB 6.5 🡺 MATLAB
6.5
Or shortcut creation/activation
___________________________________
on the desktop
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
Display Windows (con’t…) ___________________________________
■ Graphic (Figure) Window
■ Displays plots and graphs ___________________________________
■ Created in response to graphics
commands. ___________________________________
■ M-file editor/debugger window
■ Create and edit scripts of commands ___________________________________
called M-files.
___________________________________
___________________________________
___________________________________
___________________________________
Getting Help
___________________________________
■ type one of following commands in the command
window:
■ help – lists all the help topic
___________________________________
■ help topic – provides help for the specified topic
■ help command – provides help for the specified command
___________________________________
___________________________________
___________________________________
tutorial =
each command, the result ___________________________________
is not displayed.
1234
___________________________________
___________________________________
Variables (con’t…) ___________________________________
■ Special variables:
■ ans : default variable name for the result
■ pi: π = 3.1415926………… ___________________________________
■ eps: ∈ = 2.2204e-016, smallest amount by which 2 numbers can differ.
■
Inf or inf : ∞, infinity
NaN or nan: not-a-number
___________________________________
■ Commands involving variables:
who: lists the names of defined variables
___________________________________
■
variables.
■ clear name: clears the variable name
___________________________________
___________________________________
■ Vectors ___________________________________
■ Matrices
■ Array Operations ___________________________________
■ Solutions to Systems of Linear
Equations. ___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
Vectors (con’t…) ___________________________________
■ Vector Addressing – A vector element is addressed in MATLAB with an integer
index enclosed in parentheses.
■ Example: ___________________________________
>> x(3)
ans =
___________________________________
___________________________________
Vectors (con’t…)
Some useful commands: ___________________________________
x = start:end create row vector x starting with start, counting by one, ending at end
create row vector x starting with start, counting by
x = start:increment:end
increment, ending at or before end ___________________________________
linspace(start,end,number) create row vector x starting with start, ending at end,
having number elements
length(x) returns the length of vector x
y = x’ transpose of vector x ___________________________________
dot (x, y) returns the scalar dot product of the vector x and y.
___________________________________
___________________________________
___________________________________
A is an m x n matrix.
•Example: ___________________________________
>> f = [ 1 2 3; 4 5 6]
f=
123
456 ___________________________________
>> h = [ 2 4 6
1 3 5]
h=
135
the main diagonal
246
___________________________________
___________________________________
___________________________________
Matrices (con’t…) ___________________________________
■ Magic Function
■ For example you can generate a matrix by entering
>> m=magic(4) ___________________________________
It generates a matrix whose elements are such that the sum of all elements in its
rows, columns and diagonal elements are same
Sum Function
___________________________________
■
■
>> sum(m’)
Diag
___________________________________
■ You can get the diagonal elements of a matrix by entering
>> d=diag(m)
>> sum(d) ___________________________________
___________________________________
___________________________________
___________________________________
Matrices (con’t…)
___________________________________
■ Matrix Addressing:
-- matrixname(row, column)
-- colon may be used in place of a row or column reference to
select the entire row or column. ___________________________________
■ Example:
recall:
>> f(2,3) ___________________________________
f=
123
ans =
___________________________________
456
6
h=
>> h(:,1) ___________________________________
246
ans =
2
135 ___________________________________
1
rand(m,n)
returns a n x n matrix of random number
___________________________________
Matrices (con’t…)
more commands ___________________________________
Transpose B = A’
Matrix Inverse B = inv(A), A must be a square matrix in this case. rank (A) 🡺 ___________________________________
returns the rank of the matrix A.
___________________________________
>> f = [ 1 2; 3 4]
f=
12
___________________________________
34
>> g = 2*f – 1
Each element in the array f is ___________________________________
g=
multiplied by 2, then subtracted
13
___________________________________
by 1.
57
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
⎢
Example:
⎢⎢ ⎣⎡
■
>> x = [ 1 2 3 ];
Each element in x is multiplied by ⎥
>> y = [ 4 5 6 ]; ⎥⎥ ⎦⎤
the corresponding element in y. ⎢ ⎡
>> z = x .* y
z= ⎢⎢ ⎣ −
4 10 18
⎥
⎥⎥ ⎦⎤
1
A
−=
231 ___________________________________
b
=
x
5
___________________________________
=
x
111
2
___________________________________
1
x
3
___________________________________
Then, the system can be described as:
Ax = b
___________________________________
___________________________________
Solutions to Systems of Linear Equations
(con’t…) ___________________________________
A-1Ax = A-1b
Ax = b
___________________________________
x = A-1b
can be computed using left division.
■ MATLAB:
■ MATLAB:
___________________________________
>> A = [ 3 2 -1; -1 3 2; 1 -1 -1];
>> A = [ 3 2 -1; -1 3 2; 1 -1 -1];
>> b = [ 10; 5; -1];
>> b = [ 10; 5; -1];
___________________________________
>> x = inv(A)*b
>> x = A\b
x=
x=
___________________________________
-2.0000
-2.0000
5.0000
5.0000 ___________________________________
-6.0000
-6.0000
Answer:
Answer:
___________________________________
x1 = -2, x2 = 5, x3 = -6
x1 = -2, x2 = 5, x3 = -6
NOTE: ___________________________________
left division: A\b 🡺 b ÷ A right division: x/y 🡺 x ÷ y
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
Plotting (con’t…)
Plotting ■ Plotting Curves:
■ plot (x,y) – generates a linear plot of the values of x (horizontal axis) and y
■ For more information on 2-D plotting, type help graph2d
(vertical axis).
■ Plotting a point:
axis ([xmin xmax ymin ymax]) Define minimum and maximum values of the axes
axis square Produce a square plot
axis equal equal scaling factors for both axes
axis normal turn off axis square, equal
axis (auto) return the axis to defaults
___________________________________
Plotting (con’t…)
■ Multiple Curves: ___________________________________
plot (x, y, w, z) – multiple curves can be plotted on the same graph by using
■
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
Plotting (con’t…)
Plotting (con’t…)
■ Example: (polynomial function)
plot the polynomial using linear/linear scale, log/linear scale, linear/log scale, & log/log
scale:
y = 2x2 + 7x + 9
■
■ hold off – release the current figure window for new plots
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
___________________________________
Symbol Marker
y yellow
Symbol Line Style
___________________________________
.∙
– solid line
m magenta
o° ___________________________________
: dotted line
c cyan
x×
r red
–. dash-dot line
___________________________________
++
– – dashed line
g green
b blue
**
___________________________________
s□
w white
d◊
k black
v∇
___________________________________
^Δ
h hexagram
___________________________________
x=pi/2:pi/10:2*pi;
y=sin(x);
z=cos(x);
Polynomial Overview:
MATLAB provides functions for standard polynomial operations, such as polynomial roots,
evaluation, and differentiation. In addition, there are functions for more advanced
applications, such as curve fitting and partial fraction expansion.
Symbolic Math Toolbox contains additional specialized support for polynomial operations.
Representing Polynomials
MATLAB represents polynomials as row vectors containing coefficients ordered by
descending powers. For example, consider the equation
( ) ^3-2x-5
This is the celebrated example Wallis used when he first represented Newton's method to the
French Academy. To enter this polynomial into MATLAB, use
>>p = [1 0 -2 -5];
Polynomial Roots
The roots function calculates the roots of a polynomial:
>>r = roots(p)
r=
2.0946
-1.0473 + 1.1359i
-1.0473 - 1.1359i
By convention, MATLAB stores roots in column vectors. The function poly returns to the
polynomial coefficients:
13 Lab Experiment 1: Using MATLAB for Control Systems
>>p2 = poly(r)
p2 =
1 8.8818e-16 -2 -5
Polynomial Evaluation
The polyval function evaluates a polynomial at a specified value. To evaluate p at s = 5, use
>>polyval(p,5)
ans =
110
It is also possible to evaluate a polynomial in a matrix sense. In this case the equation ()
becomes ( ) , where X is a square matrix and I is the identity matrix.
Y=
377 179 439
111 81 136
490 253 639
c=
4 13 28 27 18
>>[q,r] = deconv(c,a)
q=
456
r=
00000
14 Lab Experiment 1: Using MATLAB for Control Systems
Polynomial Derivatives
The polyder function computes the derivative of any polynomial. To obtain the derivative of
the polynomial
>>p= [1 0 -2 -5]
>>q = polyder(p)
q=
3 0 -2
polyder also computes the derivative of the product or quotient of two polynomials. For
example, create two polynomials a and b:
>>a = [1 3 5];
>>b = [2 4 6];
Calculate the derivative of the product a*b by calling polyder with a single output argument:
>>c = polyder(a,b)
c=
8 30 56 38
Calculate the derivative of the quotient a/b by calling polyder with two output arguments:
>>[q,d] = polyder(a,b)
q=
-2 -8 -2
d=
4 16 40 48 36
()
()
if there are no multiple roots, where r is a column vector of residues, p is a column vector of
pole locations, and k is a row vector of direct terms.
r=
-12
8
p=
-4
-2
k=
[]
Given three input arguments (r, p, and k), residue converts back to polynomial form:
>>[b2,a2] = residue(r,p,k)
b2 =
-4 8
a2 =
168
Exercise 1:
Exercise 2:
a. ( )
()
b. ( )
()()
Objective: The objective of this session is to introduce you to writing M-file scripts,
creating MATLAB Functions and reviewing MATLAB flow control like ‘if-elseif-end’, ‘for
loops’ and ‘while loops’.
Overview:
MATLAB is a powerful programming language as well as an interactive computational
environment. Files that contain code in the MATLAB language are called M-files. You create
M-files using a text editor, then use them as you would any other MATLAB function or
command. There are two kinds of M-files:
∙ Scripts, which do not accept input arguments or return output arguments. They operate
on data in the workspace. MATLAB provides a full programming language that
enables you to write a series of MATLAB statements into a file and then execute them
with a single command. You write your program in an ordinary text file, giving the
file a name of ‘filename.m’. The term you use for ‘filename’ becomes the new
command that MATLAB associates with the program. The file extension of .m makes
this a MATLAB M-file.
∙ Functions, which can accept input arguments and return output arguments. Internal
variables are local to the function.
If you're a new MATLAB programmer, just create the M-files that you want to try out in the
current directory. As you develop more of your own M-files, you will want to organize them
into other directories and personal toolboxes that you can add to your MATLAB search path.
If you duplicate function names, MATLAB executes the one that occurs first in the search
path.
Scripts:
When you invoke a script, MATLAB simply executes the commands found in the file.
Scripts can operate on existing data in the workspace, or they can create new data on which to
operate. Although scripts do not return output arguments, any variables that they create
remain in the workspace, to be used in subsequent computations. In addition, scripts can
produce graphical output using functions like plot. For example, create a file called
‘myprogram.m’ that contains these MATLAB commands:
Typing the statement ‘myprogram’ at command prompt causes MATLAB to execute the
commands, creating fifty random numbers and plots the result in a new window. After
execution of the file is complete, the variable ‘r’ remains in the workspace.
17 Lab Experiment 1: Using MATLAB for Control Systems
Functions:
Functions are M-files that can accept input arguments and return output arguments. The
names of the M-file and of the function should be the same. Functions operate on variables
within their own workspace, separate from the workspace you access at the MATLAB
command prompt. An example is provided below:
Function definition Defines the function name, and the number and order of input
line (functions only) and output arguments.
Function or script body Program code that performs the actual computations and assigns
values to any output arguments.
Comments Text in the body of the program that explains the internal
workings of the program.
The first line of a function M-file starts with the keyword ‘function’. It gives the function
name and order of arguments. In this case, there is one input arguments and one output
argument. The next several lines, up to the first blank or executable line, are comment lines
that provide the help text. These lines are printed when you type ‘help fact’. The first line of
the help text is the H1 line, which MATLAB displays when you use the ‘lookfor’ command
or request help on a directory. The rest of the file is the executable MATLAB code defining
the function.
The variable n & f introduced in the body of the function as well as the variables on the first
line are all local to the function; they are separate from any variables in the MATLAB
workspace. This example illustrates one aspect of MATLAB functions that is not ordinarily
found in other programming languages—a variable number of arguments. Many M-files
work this way. If no output argument is supplied, the result is stored in ans. If the second
input argument is not supplied, the function computes a default value.
Flow Control:
Conditional Control – if, else, switch
This section covers those MATLAB functions that provide conditional program control. if,
else, and elseif. The if statement evaluates a logical expression and executes a group of
statements when the expression is true. The optional elseif and else keywords provide for the
18 Lab Experiment 1: Using MATLAB for Control Systems
execution of alternate groups of statements. An end keyword, which matches the if,
terminates the last group of statements.
The groups of statements are delineated by the four keywords—no braces or brackets are
involved as given below.
if <condition>
<statements>;
elseif <condition>
<statements>;
else
<statements>;
end
It is important to understand how relational operators and if statements work with matrices.
When you want to check for equality between two variables, you might use
if A == B, ...
This is valid MATLAB code, and does what you expect when A and B are scalars. But when
A and B are matrices, A == B does not test if they are equal, it tests where they are equal; the
result is another matrix of 0's and 1's showing element-by-element equality. (In fact, if A and
B are not the same size, then A == B is an error.)
>>A = magic(4);
>>B = A;
>>B(1,1) = 0;
>>A == B
ans =
0111
1111
1111
1111
The proper way to check for equality between two variables is to use the isequal function:
isequal returns a scalar logical value of 1 (representing true) or 0 (false), instead of a matrix,
as the expression to be evaluated by the if function.
Using the A and B matrices from above, you get
>>isequal(A, B)
ans =
0
19 Lab Experiment 1: Using MATLAB for Control Systems
Here is another example to emphasize this point. If A and B are scalars, the following
program will never reach the "unexpected situation". But for most pairs of matrices, including
if A > B
'greater'
elseif A < B
'less'
elseif A == B
'equal'
else
error('Unexpected situation')
end
our magic squares with interchanged columns, none of the matrix conditions A > B, A < B,
or A == B is true for all elements and so the else clause is executed:
Several functions are helpful for reducing the results of matrix comparisons to scalar
conditions for use with if, including ‘isequal’, ‘isempty’, ‘all’, ‘any’.
There must always be an end to match the switch. An example is shown below.
n=5
switch rem(n,2) % to find remainder of any number ‘n’
case 0
disp(‘Even Number’) % if remainder is zero
case 1
disp(‘Odd Number’) % if remainder is one
end
Unlike the C language switch statement, MATLAB switch does not fall through. If the first
case statement is true, the other case statements do not execute. So, break statements are not
required.
for:
The ‘for’ loop, is used to repeat a group of statements for a fixed, predetermined number of
times. A matching ‘end’ delineates the statements. The syntax is as follows:
for n = 1:4
r(n) = n*n; % square of a number
end
r
The semicolon terminating the inner statement suppresses repeated printing, and the r after
the loop displays the final result.
It is a good idea to indent the loops for readability, especially when they are nested:
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j);
end
end
while:
The ‘while’ loop, repeats a group of statements indefinite number of times under control of a
logical condition. So a while loop executes atleast once before it checks the condition to stop
the execution of statements. A matching ‘end’ delineates the statements. The syntax of the
‘while’ loop is as follows:
while <condition>
<statements>;
end
Here is a complete program, illustrating while, if, else, and end, that uses interval bisection to
find a zero of a polynomial:
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x
21 Lab Experiment 1: Using MATLAB for Control Systems
The result is a root of the polynomial x3 - 2x - 5, namely x = 2.0945. The cautions involving
matrix comparisons that are discussed in the section on the if statement also apply to the
while statement.
break:
The break statement lets you exit early from a ‘for’ loop or ‘while’ loop. In nested loops,
break exits from the innermost loop only. Above is an improvement on the example from the
previous section. Why is this use of break a good idea?
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx == 0
break
elseif sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
continue:
The continue statement passes control to the next iteration of the for loop or while loop in
which it appears, skipping any remaining statements in the body of the loop. The same holds
true for continue statements in nested loops. That is, execution continues at the beginning of
the loop in which the continue statement was encountered.
22 Lab Experiment 1: Using MATLAB for Control Systems
Exersice 1: MATLAB M-file Script
Use MATLAB to generate the first 100 terms in the sequence a(n) define recursively
by ( ) ( ) ( ( ))
with p=2.9 and a(1) = 0.5.
)
( √ (√)
a) Write a MATLAB M-file function to obtain numerical values of y(t). Your function
must take y(0), ζ, ωn, t and θ as function inputs and y(t) as output argument. b) Write a
second script m-file to obtain the plot for y(t) for 0<t<10 with an increment of 0.1, by
considering the following two cases
Case 1: y0=0.15 m, ωn = √ rad/sec, ζ = 3/(2√ ) and θ = 0;
Case 2: y0=0.15 m, ωn = √ rad/sec, ζ = 1/(2√ ) and θ = 0;
Hint: When you write the function you would require element-by-element operator
Use ‘for’ or ‘while’ loop to convert degrees Fahrenheit (Tf) to degrees Celsius using the
following equation . Use any starting temperature, increment and ending temperature
(example: starting temperature=0, increment=10, ending temperature = 200).
Please submit the exercises (m-files and results) in the next lab.