Experiment 1 (1)
Experiment 1 (1)
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:
MATLAB
Deliverables
A complete lab report including the following:
Summarized learning outcomes.
MATLAB scripts and their results should be reported properly.
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.
The MATLAB environment allows the user to:
manage variables
import and export data
perform calculations
generate plots
develop and manage files for use with MATLAB.
Display Windows
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
help help – provides information on use of the help command
helpwin – opens a separate help window for navigation
lookfor keyword – Search all M files for keyword
Variables:
Variable names:
Must start with a letter
May contain only letters, digits, and the underscore “_”
Matlab is case sensitive, i.e. one & OnE are different variables.
Matlab only recognizes the first 31 characters in a variable name.
Assignment statement:
Variable = number;
Variable = expression;
Example:
NOTE: when a semi-colon
>> tutorial = 1234;
”;” is placed at the end of
>> tutorial = 1234
tutorial = each command, the result 1234 is not displayed.
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
Vector Addressing
A vector element is addressed in MATLAB with an integer index enclosed in parentheses.
Example:
>> x(3)
ans =
1.5708 3rd element of vector x
The colon notation may be used to address a block of elements.
(start : increment : end )
start is the starting index, increment is the amount to add to each successive index, and end is the ending
index. A shortened format (start : end) may be used if increment is 1.
Example:
>> x(1:3)
ans = 0 0.7854 1.5708 1st to 3rd elements of vector x
NOTE: MATLAB index starts at 1.
Matrices
A Matrix array is two-dimensional, having both multiple rows and multiple columns, similar to vector
arrays: it begins with [, and end with ] spaces or commas are used to separate elements in a row semicolon
or enter is used to separate rows.
A is an m x n matrix.
Example:>> f = [ 1 2 3; 4 5 6]
f=
12 3
4 5 6
>> h = [ 2 4 6
1 3 5]
h=
2 4 6
1 3 5
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
You can verify the above magic square by entering
>> sum(m)
For rows take the transpose and then take the sum
>> sum(m’)
You can get the diagonal elements of a matrix by entering
>> d=diag(m)
>> sum(d)
Matrix Addressing:
-- matrixname(row, column)
-- colon may be used in place of a row or column reference to select the entire row or column.
zeros(n) returns a n x n matrix of zeros zeros(m,n) m x n matrix of zeros
ones(n) returns a n x n matrix of ones ones(m,n) a m x n matrix of ones
rand(n) returns a n x n matrix of random number rand(m,n) returns a m x n matrix of random number
size(A) for a m x n matrix A, returns the row vector [m,n] containing the number of rows and columns in
matrix.
length(A) returns the larger of the number of rows or columns in A.
Transpose B=A’
Identity Matrix eye(n) returns an n x n identity matrix
eye(m,n) returns an m x n matrix with ones on the main diagonal and zeros
elsewhere.
Addition and C =A + B C= A – B
subtraction
Scalar B=xA,where x is a scalar.
Multiplication
Matrix C=A*B
Multiplication
Matrix Inverse B = inv(A), A must be a square matrix in this case. rank (A) returns the rank of
the matrix A.
Matrix Powers B = A.^2 squares each element in the matrix
C = A * A computes A*A, and A must be a square matrix.
Determinant det (A), and A must be a square matrix.
Array Operation:
Scalar Array Mathematics
For addition, subtraction, multiplication, and division of an array by a scalar simply apply the operations to
all elements of the array.
Example:
>> f = [ 1 2; 3 4]
f=
1
>> g = 2*f– 1
g=
3 2 1
A=1 3 2
1 1 1
Ax = b
x=A-1*b
>> A = [ 3 2 -1; -1 3 2; 1 -1 -1];
>> b = [ 10; 5; -1];
>> x = inv(A)*b
>> x = A\b
Answer:
x1 = -2, x2 = 5, x3 = -6
Plotting
For more information on 2-D plotting, type help graph2d
>> plot ( variablename, ‘symbol’). The function plot () creates a graphics window, called a Figure window,
and named by default “Figure No. 1”
Plotting Curves:
plot (x,y) – generates a linear plot of the values of x (horizontal axis) and y (vertical axis).
semilogx (x,y) – generate a plot of the values of x and y using a logarithmic scale for x and a linear scale
for y
semilogy (x,y) – generate a plot of the values of x and y using a linear scale for x and a logarithmic scale
for y.
loglog(x,y) – generate a plot of the values of x and y using logarithmic scales for both x and y
Multiple Curves:
plot (x, y, w, z) – multiple curves can be plotted on the same graph by using multiple arguments in a plot
command. The variables x, y, w, and z are vectors. Two curves will be plotted: y vs. x, and z vs. w.
legend (‘string1’, ‘string2’,…) – used to distinguish between plots on the same graph
Multiple Figures:
figure (n) – used in creation of multiple plot windows. place this command before the plot() command, and
the corresponding figure will be labeled as “Figure n”
Command Description
grid on Adds dashed grids lines at the tick marks
grid off removes grid lines (default)
grid toggles grid status (off to on, or on to off)
title (‘text’) labels top of plot with text in quotes
xlabel (‘text’) labels horizontal (x) axis with text is quotes
ylabel (‘text’) labels vertical (y) axis with text is quotes
text (x,y,’text’) Adds text in quotes to location (x,y) on the current axes, where (x,y) is in
units from the current plot.
Exercise 1:
Use Matlab command to obtain the following
a) Extract the fourth row of the matrix generated by magic(6)
b) Show the results of ‘x’ multiply by ‘y’ and ‘y’ divides by ‘x’.
Given x = [0:0.1:1.1] and y = [10:21]
c) Generate random matrix ‘r’ of size 4 by 5 with number varying between -8 and 9
Exercise 2:
Use MATLAB commands to get exactly as the figure shown below
x=pi/2:pi/10:2*pi; y=sin(x);
z=cos(x);
Part II: Polynomials in MATLAB
Objective:
The objective of this session is to learn how to represent polynomials in MATLAB, find roots of
polynomials, create polynomials when roots are known and obtain partial fractions.
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.
Representing Polynomials
MATLAB represents polynomials as row vectors containing coefficients ordered by descending powers.
For example, consider the equation
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:
>>p2 = poly(r)
p2 =
1 8.8818e-16 -2 -5
poly and roots are inverse functions.
Polynomial Evaluation
The polyval function evaluates a polynomial at a specified value. To evaluate p at s = 5, use
>>polyval(p,5)
ans
=
11
0
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.
>>X = [2 4 5; -1 0 3; 7 1 5];
>>Y = polyvalm(p,X)
Y=
c=
4 13 28 27 18
Use deconvolution to divide back out of the product:
>>[q,r] = deconv(c,a)
q=
4 5 6
r =
0 0 0 0 0
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
q/d is the result of the operation.
>>[r,p,k] = residue(b,a)
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 =1 6 8
Exercise 1:
Exercise 2:
a.
b.
Part III: Scripts, Functions & Flow Control in MATLAB
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-else if-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:
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 f = fact(n) Function definition line
% Compute a factorial v alue. H1 line
% FACT(N) returns the factorial of N, Help text
% usually denoted by N!
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:
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 =
0 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
The proper way to check for equality between two variables is to use the is equal
function: if isequal(A, B), ...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
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 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) == si gn(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x
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.