matlab notes_pwr.pdf
TRANSCRIPT
![Page 1: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/1.jpg)
Alexandria University Mathematics Faculty of Engineering February 2013
Lab Notes
MATLAB
Session (1)
Eng. Sara Hassan Kamel
![Page 2: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/2.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Introduction
MATLAB (Matrix Laboratory) is a high performance language for technical
computing.
MATLAB Environment:
Command window
This is where MATLAB
commands are written
and executed
Workspace Tab: (click to view)
This is where the variables are shown
Command History:
All commands previously executed in the
command window appear here.
When typing commands in the command
window you may use the “up↑” and
“down↓” arrows to navigate through
previous commands and modify them or re-
execute them.
![Page 3: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/3.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
MATLAB is case sensitive, that is two variables A and a correspond to
different variables.
Variable names must begin with a letter NOT a number
o e.g.: a A a_1 A1 fmax
If you assign a different value to an existing variable, its current value will be
overwritten. If you will need the current value, you must use a new variable to
store your data.
To view a previously written command use the “up” key and navigate using
“up” and “down” keys.
To clear the command window use >> clc
To clear the workspace use >> clear all
To close figure windows >> close all
Scalars, Vectors, Arrays (Matrices) and Dimensioning:
Arrays (Matrices):
An array (or a matrix) is a data unit that consists of many elements. For example, a
4-by-3 matrix consists of 4 rows by 3 columns of numbers:
908
632
096
541
A
Vectors:
A vector is a special case of an array; it is an array that consists of either one column
OR one row only.
6431x Row Vector
8
5
2
y Column Vector
Scalar:
A scalar is an array of one element only (a 1-by-1 matrix). It can simply be regarded
as a number.
![Page 4: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/4.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Defining Variables in MATLAB:
4321
542
101
321
10
x
A
a
5
4
3
y
To define these variables use the following commands:
>> a=10;
>> A=[1 2 3;1 0 1;-2 4 5];
>> x=[1 2 3 4]; OR x=[1,2,3,4];
>> y=[3;4;5];
NOTES:
If we remove the semicolon “ ; ” from the end of the command line the output
is displayed in the command window:
Use square brackets to define matrices, row vectors and column vectors.
Use a comma “ , ” or space to move between elements in the SAME ROW.
Use a semicolon to move to the NEXT ROW.
Variables are saved temporarily in your workspace as shown:
Predefined Constants:
Among the predefined constants in MATLAB are the values of π written as pi and
the value of 1i written as i or j
![Page 5: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/5.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Basic Operators:
+ Addition - Subtraction .* Element-by-element Multiplication * Matrix Multiplication ./ Element-by-element Division / A/B means 1AB .^ Element-by-element exponentiation ^ A^3 means matrix multiplication as follows: AAA
Element-by-Element Multiplication:
Matrices must be of the SAME SIZE
Multiplying A.*B means multiplying every element in A by the corresponding element
in B (i.e. the element in the same location) to produce a matrix of the SAME SIZE as
A and B.
For example:
403
201210
2*29*01*3
4*53*410*1*
291
4310
203
541
BA
BA
Matrix Multiplication:
Matrices must satisfy the following condition The number of columns of the first
matrix must be equal to the number of rows of the second matrix (i.e. their “inner
dimensions” agree) and the resulting matrix has same number of rows as the first
matrix and the same number of columns as the second matrix.
Meaning that
pmpnnm CBA *
For example:
13
8
8
4
7
4
3*32*2
3*22*1
0*34*2
0*24*1
1*32*2
1*22*1*
3
2
0
4
1
2
32
21
BA
BA
![Page 6: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/6.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Built-in Functions:
sin( ) cos( ) tan( ) angle in radians: e.g.: sin(π)
sind( ) cosd( ) tand( ) angle in degrees: e.g.: sind(180)
asin( ) acos( ) atan( ) Output: angle in radians
asind( ) acosd( ) atand( ) Output: angle in degrees
cosh( ) sinh( ) tanh( )
asinh( ) acosh( ) atanh( )
eye( ) Identity matrix
sqrt( ) Square Root
exp( ) Exponential xe
log( ) ln(x)
log10( ) log(x)
real( ) Real part of a complex number
imag( ) Imaginary part of a complex number
abs( ) Magnitude or absolute value
angle( ) Angle of a complex number
max( ) Maximum valued element in a matrix
find( ) gives the indices of the elements that satisfy the argument
The functions mentioned here are only a few of the many functions defined in
MATLAB. You may not use all the function mentioned here during the lab sessions
but they are here for future reference. If you wish to know more about any of these
functions (or a function that is not listed above) you may use MATLAB help.
![Page 7: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/7.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
NOTES:
With scalars, it doesn’t matter whether you use matrix or element-by-element
operations.
To add or subtract matrices they must be of the SAME SIZE
To multiply matrices:
Element-by-Element (A .*B): SAME SIZE
Matrix Multiplication (A*B): No. of Columns of A = No. of Rows of B
Applying some built-in function such as sin, cos, tan, exp,… to a matrix means
applying the function to every element in the matrix:
)4sin()sin(
)2/sin()1sin()sin(
4
2/1
pi
piA
pi
piA
The result of the following commands may confuse you:
o >> sin(0) = 0
o >> sin(pi) = 1.2246e-016
o >> tan(pi/2) = 1.6331e+016
The number 1.2246e-16 means 1.22*10 –16 which is a very small number
almost equal to zero which is the result you might expect when executing
sin(pi). Similarly 1.6331e+16 = 1.6331*10 16 is a very large number.
WHY?? Remember that the value of “pi” is stored in MATLAB is only an
approximation of the actual value “π”.
![Page 8: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/8.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Matrix Concatenation:
Concatenation means “gluing” two or more matrices together to create a larger
matrix. There are basically two types of concatenation: horizontal and vertical.
Horizontal Concatenation:
Matrices must have the same number of ROWS.
The resulting matrix has the same number of rows as the original ones and
the number of columns is equal to the sum of the number of columns of the
concatenated matrices.
Vertical Concatenation:
Matrices must have the same number of COLUMNS.
The resulting matrix has the same number of columns as the original ones
and the number of rows is equal to the sum of the number of rows of the
concatenated matrices.
Vertical Horizontal Both
Horizontal Concatenation:
![Page 9: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/9.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Vertical Concatenation:
Both:
Question:
If we have A3x4, B3x2 and C4x6, which of them can be concatenated and how?
Answer:
A and B Horizontal Concatenation [A B]
A and C Vertical Concatenation [A ; C]
A and B horizontally then C vertically [A B ; C]
A
C
B
![Page 10: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/10.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Matrix Indexing:
To read a certain element (or multiple elements) within a matrix or vector:
Given:
>> A =
1 2 0
3 4 -2
5 6 8
>> A(3,2)
6
>> A([1 2],[3 1])
0 1
-2 3
>> A(1,:)
1 2 0
>> A(8)
-2 In this case MATLAB counts the elements column by column.
>> B=[1 2 8 4];
>> B(2)
8
>> B(end)
4
![Page 11: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/11.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Getting Help with MATLAB:
There are basically two methods to access MATLAB help:
1. By clicking the Help Button in the MATLAB toolbar as shown:
This will open a new window:
Use the search bar to type what you’re looking for.
2. Inline Help:
If you know the name of the function you’re looking for, for example “plot”, you can
type the following command in the command window:
>> help plot
This displays a brief explanation of how to use the function and its syntax. To access
the full help document (the reference page in the Help Browser) go to the last line
displayed on the screen and click on doc plot.
Type here!
![Page 12: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/12.jpg)
Alexandria University Mathematics Faculty of Engineering March 2013
Lab Notes
MATLAB
Session (2)
Plots Using MATLAB
Eng. Sara Hassan Kamel
![Page 13: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/13.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Two-Dimensional Plots:
In order to plot any line or curve, you need a set of points, namely, the
coordinates (x, y) of each point. Once you’ve marked these points on the x-y
plane, you join them together. This is the way MATLAB works. You give it the
set of points (data) in the form of two vectors equal in length, then MATLAB
plots the points and joins them together using straight lines.
Example:
Given the following data:
x 0 1 2 3 4
y 0 1 4 9 16
To plot these we will view them as follows:
x 0 1 2 3 4
y 0 1 4 9 16
Now we plot the points:
(0,0) (1,1) (2,4) (3,9) (4,16)
(0,0)
(1,1)
(2,4)
(3,9)
(4,16)
Notice how the points are
joined by straight lines even
though clearly these points
are most likely to represent
the curve y=x2
![Page 14: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/14.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
The simplest way to plot a function is by executing the following commands:
>> x=[0 1 2 3 4];
>> y=[0 1 4 9 16];
>> plot(x, y);
This leads us to the following question: What if we need to plot the function
y=x2 from x=0 to x=100 using 101 points? Here we will use the colon operator
or the built-in function linspace.
The Colon Operator:
Command Output Vector
>> x=0:100; Produces a vector of 101 points from 0 to 100 with a unit step (step=1)
>> x=0:2:10; x = 0 2 4 6 8 10
>> x=0:3:10; x = 0 3 6 9
>> x=10:-1:1; x = 10 9 8 7 6 5 4 3 2 1
>> x=10:-2:1; x = 10 8 6 4 2
x = start:step:end;
NOTES:
The default step size is 1. So if no step size is specified – as in the first
example – then it will be assumed 1.
If you wish to create a sequence of descending numbers use a negative
step. Remember here that you must specify the step size even if it’s -1
(MATLAB will not assume a step size of -1 if you write a starting number
that is greater than the end of the sequence; instead, you’ll get an
empty vector.
![Page 15: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/15.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
The linspace function:
This function is used to generate linearly space vectors. Use it when you know
how many points you want in the vector rather than the step (as well as, of
course, the starting and end point of the vector).
linspace(start, end, NumberOfPoints)
Example:
x=linspace(0,10,11); is the same as x=0:10;
x=linspace(0,10,12); gives
0, 0.9091, 1.8182, 2.7273, 3.6364, 4.5455, 5.4545, 6.3636,
7.2727, 8.1818, 9.0909, 10.0000
length function:
To find the length (number of points) in a vector use this function.
>> length(x)
![Page 16: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/16.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
2D Plots:
To plot a function f(x,y) you need to define both x and y.
Example: To plot x+y=1 from x= –5 to x=5
>> x=-5:5;
>> y=1-x;
>> plot(x,y)
To plot 2xy
>> y=x.^2; Here we use element-by-element multiplication
>> plot(x,y)
Here the curve is not smooth; that’s
because we used x=-5:5 (i.e. with a
step equal to 1) so MATLAB computes
the value of y at (-5,-4, -3.....2,3,4,5)
only and joins them with straight lines.
To get a smoother curve, use a
smaller step:
>> x=-5:0.1:5;
![Page 17: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/17.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Editing the plot:
You can add a grid, title, labels and legends to the plot. You can also change the
colour of the plot and use markers each point on the plot. You can plot more than
one function in the same figure.
Quick Note: Strings in MATLAB:
A string is a sequence of characters (letters, numbers and/or symbols). In some of
the functions used here you will need to enter a string input such as the title of the
plot. In that case, for MATLAB to recognize your input as a string you need to put it
between single quotation marks. (e.g. 'MATLAB Session (2): First Plot').
plot Function:
plot(x,y,'r--o',x2,y2,'g-*',....)
NOTES:
To plot several plots on one figure there are two methods:
Use one plot function as indicated above
After the first plot, type >> hold on then type the next plot commands.
When you’re done and you don’t want the following commands to affect the
previous plot type >> hold off
The following functions take one string input:
o title( )
o xlabel( )
o ylabel( )
The function legend adds a small box at the top right corner of the figure that shows
a sample of each line or curve in the plot described by a text label that you specify.
For example, if you have three curves, you may write:
>> legend('curve 1','curve 2','curve 3')
Line Color
Line Style
Marker Type
1st Curve 2nd Curve . . .
![Page 18: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/18.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Example:
>> x=0:10;
>> y1=x.^2;
>> y2=1-exp(-2*x);
>> y3=x;
>> plot(x,y1,'b--',x,y,'r*',x,y3,'g')
>> grid on
>> title('Lab 2')
>> xlabel('x')
>> ylabel('y')
>> legend('y=x^2','y=1-e^-^2^x','y=x')
![Page 19: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/19.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Using LaTex Interpreter:
To use Greek letters, subscripts, superscripts and style of the text in a string such as
the title we use the LaTex Interpreter tool.
^ Superscript (e.g. x2)
_ Subscript (e.g. Pav)
\alpha α
\pi π
\int Integral ∫ \delta ∆
\theta θ
The full list is available in MATLAB help “Text Properties” OR “Annotation
Textbox Properties”.
Markers, Colours & Line Types:
Syntax Marker Type
No Marker (default)
o Circular
s Square
p Pentagonal
h Hexagonal
d Diamond
v Triangular (down)
< Triangular (left)
> Triangular (right)
x Cross
You may also use the following:
hold on To make several superimposed plots with several “plot”
commands.
xlim([a b]) To limit the x-axis from a to b only.
ylim([a b]) To limit the y-axis from a to b only.
Syntax Colour
r red
g green
b blue (default)
k black
m magenta
y yellow
c cyan
w white
Syntax Line Type
- Solid (default)
- - Dashed
: Dotted
-. Dash-dotted
![Page 20: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/20.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
More plotting commands:
fplot(function,limits) function is a string with a variable x
e.g. (‘sin(x)’ OR ‘x^2’).
o Example:
>> fplot('exp(x)',[-2 2])
stem( )
o >> x=0:10;
o >> y=x.^3;
o >> stem(x,y)
stairs( )
o >> stairs (x,y)
![Page 21: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/21.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Subplots:
>> subplot(m,n,p)
It divides the figure into an m-by-n matrix, and plots the figure in the following
command in the pth element, where the elements are counted along the top row then
the second row and so on...
>> subplot(4,1,1)
>> subplot(4,2,3)
>> subplot(4,2,4)
>> subplot(4,4,9)
>> subplot(4,4,10)
>> subplot(4,4,13)
>> subplot(4,4,14)
>> subplot(2,2,4)
After every subplot command write the plotting command for the function you
want to plot in that specified space.
![Page 22: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/22.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Using the figure command:
Executing the following command opens an empty figure ready for you to plot:
>> figure
This can be useful if you want to plot several functions each in a separate window.
But BE CAREFUL:
If you have several figures open, and you open a new figure to plot, then you go
back and click on one of the previous plots, the new plot command will be executed
in the “current or active figure” – in other words – the one you last clicked on!!
Tips:
All vectors used to plot a 2D or a 3D figure must all be of the SAME LENGTH.
If you want to plot a point, use scalars instead of vectors in the plotting
function (e.g. plot(3,5, 'o')). If you want to plot several points, put them
in a vector, and when specifying the line color, type and marker, just write the
color and the marker like this for example: plot(x,y,'ro'). This could also
be useful if you want to use markers of a different color!
You can some properties of the resulting plot by using the plot editor in the figure:
(Click the arrow to start editing).
![Page 23: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/23.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Three-Dimensional Plots (3D plots):
There are two main types of 3D plots:
1. Line Plots
2. Surface Plots
As you should know, you can draw a line or a curve in a 3-dimensional space
(i.e. with 3 coordinates; x, y and z). You can also draw a plane or a surface. That
is how the types of 3D plots are classified in MATLAB. The following part will
give you more details about how the program deals with each type.
Line Plot figure (1.1)
Surface Plot figure (1.2)
![Page 24: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/24.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
3D Line Plots:
As you have already learned in 2D plots, MATLAB plots a set of points given to
the plot function in the form of two equal-length vectors and joins them with
straight lines. Similarly, we deal with line plots as a set of points (this time,
each has 3 coordinates) that we join together by straight lines.
To plot these we will view them as follows:
x 0 1 2 3 4
y 0 1 4 9 16
z 0 1 2 3 4
Now we plot the points using the function plot3 for line plots:
plot3(x,y,z)
(0,0,0) (1,1,1) (2,4,2) (3,9,3) (4,16,4)
(0,0,0)
(1,1,1)
(2,4,2)
(3,9,3)
(4,16,4)
plot3(0:4,[0:4].^2,0:4)
OR x=0:4; y=x.^2; z=x; plot3(x,y,z)
![Page 25: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/25.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Parametric Representation: Say we have a direct relation between the variables x and y: y=x
2
We can use an extra variable - a “parameter”- to rewrite the equation as: x=t
y=t2
This is just a simple example, where it may appear that using the direct relation is much more convenient, but in other cases, the direct relation is more complicated and using the parametric form is a lot easier.
Example:
We want to plot a helix. A helix is a 3D spiral shape whose equations (in
parametric form) are:
tz
ty
tx
sin
cos
So we execute the following commands:
t=-10*pi:pi/100:10*pi; x=cos(t); y=sin(t); z=t; plot3(x,y,z) grid on
![Page 26: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/26.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Notice that the function plot3 has the same options as plot, meaning that you
can change the color, line type and marker type as follows:
plot3(x,y,z,'r--o')
This will change the line to a red, dashed line with circular markers. You can also add a grid, title, legend, x, y and z labels.
Commands:
t=-2*pi:pi/100:2*pi; x=cos(t); y=sin(t); z=t; plot3(x,y,z,'r--o',z,y,x,'b-*') grid on title('Helix') xlabel('x-axis') ylabel('y-axis') zlabel('z-axis') legend('Helix1','Helix2')
Note: The figure here has been rotated to get a better view of the plots. The default
view may look different when running the commands in MATLAB. Rotation will be
explained later in these notes.
![Page 27: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/27.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Notice the difference between the following 3D plots of a helix. Look at the
ranges of t in each case.
t=-pi:pi/100:pi; plot3(cos(t),sin(t),t)
t=-pi:pi/100:pi; plot3(cos(3*t),sin(3*t),3*t)
t=-5*pi:pi/100:5*pi; plot3(cos(t),sin(t),t)
t=-5*pi:pi/100:5*pi; plot3(cos(t/2),sin(t/2),t/2)
![Page 28: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/28.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Property Editor:
Instead of using functions like “title”, “xlabel” and editing the colors of the line
using strings like 'r--o' you can do all this editing using the Property Editor.
Click Edit Figure Properties
This opens the property editor beneath the figure, there you can manually
change the different parts of the figure:
1. The background of the figure (default: grey)
2. The axes background (default: white)
3. The line/curve (default: blue, solid, no marker)
![Page 29: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/29.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
The Figure Background:
Notice that the background is selected if the black squares appear as in the
figure. Here you can change the grey background from the “Figure Color” as
indicated.
The “Colormap” will be used later on in surface plots. However, here in line
plots it has no function.
Selection
![Page 30: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/30.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
The Figure Axes:
To select the axes (the yellow part here) click on them. The selection square
markers will show the selected part. Now you can change the color, the grid,
the limits and the labels.
![Page 31: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/31.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
The Line or Curve:
Here you can change the line type, color and thickness as well as the marker
type, facecolor and outline color.
Here’s an example: (Zooming in on a modified line):
![Page 32: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/32.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
You can also use Insert and choose any of the options shown.
For some options, like adding or removing the grid, you can right click on the
axes (or the line, whichever part you wish to modify) and do what you want
using the menu that appears.
It is important to note that all these options are available for 2D plots as well.
![Page 33: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/33.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
3D Surface Plots:
In order to draw a surface, you first need to create a grid in the x-y plane, and
then, at every point in this grid, specify the height (z-coordinate) of the surface
by using z as a function of x and y.
Notice that when dealing with lines we use vectors of the same length. We
take the 1st element in x with the 1st element in y and in z to create the 1st
point, then the 2nd element in x, y and z to create the 2nd point and so on…
To create a grid we want the 1st element in x with ALL the elements of y, then
the 2nd element of x with ALL the element of y and so on…
This is what a grid
looks like.
You don’t actually
see this grid, you
visualize it.
After providing
MATLAB with the
“height” of the surface
at each point this is
how it looks like.
![Page 34: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/34.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Example:
Plot the function yxz sincos for x and y ranging from 0 to 10.
Commands:
x=0:0.2:10; y=x; [x,y]=meshgrid(x,y); z=cos(x).*sin(y); mesh(x,y,z) figure surf(x,y,z) figure surf(x,y,z) shading interp
This command creates the “grid” i.e.
instead of having two vectors x and y
(each 1x51) we get two matrices (51x51).
Look at the workspace before and after
executing this to see the difference.
mesh(x,y,z) plots a wireframe
surface.
Notice that the gridlines of the surface are
colored while the spaces (or squares) in
between are white.
The highest points on the surface are red
while the lowest points are dark blue.
surf(x,y,z) plots a continuous,
colored surface.
Notice that the gridlines of the surface are
black while the spaces in between are
colored according to the height of the
surface points.
![Page 35: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/35.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Additional options for 3D surface plots in the Plot Editor:
Colormap: Changes the gradient colors of the surface and mesh plots.
Rotate: (Works for all 3D line and surface plots)
1. Click the “Rotate 3D” button.
2. Go to the plot in the figure.
3. Click and drag to rotate.
4. If you wish to return to the original view, right click (with the rotation
cursor active) and choose “Reset to Original View”.
Executing the command:
>> shading interp
After plotting using “surf” removes
the black gridlines and creates a
smooth colored surface.
This command, however, has no
effect on mesh plots.
![Page 36: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/36.jpg)
Alexandria University Mathematics 6 Faculty of Engineering March 2013
Lab Notes
MATLAB
Session (3)
Eng. Sara Hassan Kamel
![Page 37: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/37.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Using “input” and “disp” functions
Input Function (input):
user_entry = input('prompt')
user_entry = input('prompt', 's')
Use “input” function when you want to ask the user to enter a certain value then you can save it in a certain variable.
Example:
>> x = input(‘Enter the value of x: ‘)
The previous command displays the following in the command window:
Enter the value of x:
Now the user should type in the value of x, say 10. So type 10 and click enter. This way the value 10 is assigned to the variable x and it appears in the workspace.
Example:
>> word = input(‘Enter password: ’, ‘s’)
The previous command has an extra input ‘s’ which means that whatever the
user types in will be treated as a string not a numerical value. So if you type in
lab3 then lab3 will be treated as a string and stored in the variable word.
Display Function (disp):
Use this function to display a certain string or array to the user in the
command window. Here whatever you type in as an input to the function
disp will not be stored anywhere, it will just be displayed.
Example:
>> disp(' Corn Oats Hay')
>> disp(rand(5,3))
![Page 38: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/38.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Results in:
Corn Oats Hay
0.2113 0.8474 0.2749
0.0820 0.4524 0.8807
0.7599 0.8075 0.6538
0.0087 0.4832 0.4899
0.8096 0.6135 0.7741
MATLAB m-files:
Instead of writing commands and executing them one by one in the command
window we can create a file, write all commands and then run the file. There
are two types of m-files:
SCRIPTS:
No inputs or outputs defined
Consist of a sequence of instructions
You can choose any filename to save the script
FUNCTIONS:
Can have inputs and outputs
Must start with the following line: function [op1,op2,...]=function_name(ip1,ip2,....)
The filename must be the same as the name specified in the previous
(first) line i.e. in this example it should be function_name.m
NEW m-file
![Page 39: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/39.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Note that both scripts and functions have the extension “.m”, but the content
of each type is different as mentioned earlier.
Example:
Write a function and a script that count the number of elements of a given
matrix. Test your program for the matrix:
402
001
654
321
Now to do that you can use the function numel( )which directly gives the
number of elements in the given matrix. Another solution would be to use the
function size which had 2 outputs: the number of rows and the number of
columns, then multiply the two results.
SCRIPT:
A=input('Enter the input matrix: '); x=numel(A); disp(['The number of elements in the given matrix is ', num2str(x)])
Or use this: disp('The number of elements in the given matrix is:') disp(x)
Where the function “num2str” converts x from a numerical value to a string. We use this function because the input to disp must be only one input; either a string or a numerical value/array. So we construct a vector whose elements are all strings, the first part is the string ‘The of elements in the given matrix is ’ and the other is the number in x converted to string. To run the script and execute the commands in the script, there are two ways:
1. Type the filename in the command window and click enter >> lab3_script1
2. Click the “Run” button at the top of the m-file window:
![Page 40: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/40.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
FUNCTION:
Here we shall try using size instead of numel function [x]=lab3_fn1(A) [r c]=size(A); x=r*c;
Now the function lab3_fn1 can be used the exact same way you use numel or any other built-in function, as long as the function is saved in your current directory. >> B=[1 2 3;4 5 6;1 0 0;2 0 4]
B =
1 2 3
4 5 6
1 0 0
2 0 4
>> numel(B)
ans =
12
>> lab3_fn1(B)
ans =
12
![Page 41: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/41.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Write a function that replaces a specific column of a given matrix by some
other column vector. Test your program on the matrix in the previous problem.
Try replacing the second column by the vector v = [ 1 1 0 0]t.
function [A_new]=lab3_fn2(A,x,n_col) A_new=A; A_new(:,n_col)=x;
The last line means that we replace all rows in the column number n_col in
the matrix A by the vector x (which must be a column vector whose size is
suitable for this replacement to occur.
>> lab3_fn2(B,[1;1;0;0],2)
ans =
1 1 3
4 1 6
1 0 0
2 0 4
Write a script file that takes as input a matrix and displays a menu of elementary row operations (interchanging rows, addition of a multiple of a row to another, multiplying a row by a non-zero constant) together with an exit option. Display the resulting matrix after performing the desired row operation.
We will use the switch function:
Syntax:
switch variable
case value1
....
case value2
....
:
:
otherwise
....
end
![Page 42: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/42.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
ANSWER:
A=input('Enter the matrix: '); disp('Which of these row operations do you want to execute?') disp('(1)Interchanging Rows') disp('(2)Multiplying a row by a Scalar') disp('(3)Adding Two Rows') x1=input('Enter 1,2 or 3 for the required row operation: '); switch x1 case 1 disp('Which rows do you want to interchange?') r1=input('Number of 1st row: '); r2=input('Number of 2nd row: '); temp=A(r1,:); A(r1,:)=A(r2,:); A(r2,:)=temp; disp(A) case 2 c=input('Scalar: '); r=input('Number of row: '); x=c*A(r,:); A(r,:)=x; disp(A) case 3 r1=input('First row: '); r2=input('Second row (in which the addition operation
is executed: '); x=A(r1,:)+A(r2,:); A(r2,:)=x; disp(A) end
Write a function to plot a circle. (Hint: use the parametric representation of
the circle).
A circle of radius “a” is written in parametric form as:
X=a*cos(t)
Y=a*sin(t)
NOTE:
A function may not have numerical outputs, such as this one, so we omit the
output part from the first line and we just write
function fn_name(ip1,..)
![Page 43: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/43.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
So the function will be written as follows:
function plotcircle(r) t=0:0.01:2*pi; x=r*cos(t); y=r*sin(t); plot(x,y) axis square
Write a script and a function according to the description:
1) Write a program to plot the function Acos(wt). The user should be able to
specify the amplitude A, the frequency w, the range of t (starting point, end
point and step size separately) as well as the line color, type and marker
type.
Solution:
Script:
ts=input('Enter the starting point of the range: '); tf=input('Enter the end point of the range: '); tstep=input('Enter the step: '); A=input('Enter the Amplitude of the Sine Wave: '); w=input('Enter the value of w in Acos(wt): '); spec=input('Specify the line color, type and marker: ','s'); t=ts:tstep:tf; x=A*sin(w*t); plot(t,x,spec) title('Sine Function') xlabel('x') ylabel('y') grid on
This makes the y-axis
appear the same length
as the x-axis so the
circle doesn’t appear
oval.
![Page 44: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/44.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Function: (the filename is plot2Dsin.m)
function plot2Dsin(ts,tf,tstep,A,w,spec) t=ts:tstep:tf; x=A*sin(w*t); plot(t,x,spec) title('Sine Function') xlabel('x') ylabel('y') grid on
Exercises: 1- Write a function that solves a 33 system of linear equations using
Cramer’s rule. Your program should test whether the input matrix is singular in which case displays an error message. Make use of the function you created in problem 2. Test your program using the following system of linear equations:
x – y + z = 3, x + 3y + z = –1, x – 3z = –2.
2- Write a function that computes the mean, variance and standard deviation of a given set of data points. Test your program using the following data set: 69x,93x,75x,90x 4321 . Display helpful
messages. Compare your results with those obtained using the corresponding MATLAB built-in functions. (Hint: the estimates for the
mean, variance and standard deviation are given by
n
1iix
n
1m ,
)1n/()mx(vn
1i
2i
and vs , respectively)
HINT: Cramer’s Rule:
Consider a system of linear equations represented in matrix multiplication form as follows:
Ax=b Where A is invertible.
Then the theorem states that:
![Page 45: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/45.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
where Ai is the matrix formed by replacing the ith column of A by the column vector b.
Example:
2x + y + z = 3 x – y – z = 0 x + 2y + z = 0
Coefficient Matrix is D:
Evaluating each determinant, we get:
Cramer's Rule says that x = Dx ÷ D, y = Dy ÷ D, and z = Dz ÷ D. That is:
x = 3/3 = 1, y = –6/3 = –2, and z = 9/3 = 3
![Page 46: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/46.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
PART (II)
Introduction:
In this session, you will learn how to use some programming functions in
MATLAB. These functions include “for”, “if”, “switch” and others. Such
functions are best explained through examples. This session focuses on “for”.
for:
Use “for” to create a loop, i.e. when you want a certain command or a set of
commands to be executed several times.
for variable = initval:step:endval
statement
...
statement
end
Where the “variable” is the counter, you can give it any name, it’s just a
variable. For-loops are best explained through examples.
Example (1):
Use a for-loop to sum the numbers from 1 to 5.
Answer:
s=0; for n=1:5 s=s+n; end disp(s)
Now we shall explain how this works:
The idea is to create a variable, give it an initial value and use the loop to add
the numbers inside this variable one by one:
![Page 47: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/47.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Snew = Sold + n
n Old value of s New value of s (s=s+n)
1 0 1+0=1 2 1 2+1=3
3 3 3+3=6 4 6 4+6=10
5 10 5+10=15
Notice that n is a vector (1:5 = [1 2 3 4 5]) so when we enter the loop for the
first time, n takes the value of the first element, and so n=1.
In the second iteration (step), n takes the following element’s value - which is 2
- and so on… (see the table above).
Example (2):
Write a program (script) to sum up the first 10 even numbers (excluding zero).
Answer:
s=0; for n=0:2:20 s=s+n; end disp(s)
OR
s=0; for n=1:10 s=s+2*n; end disp(s)
Both solutions are correct. However, if you don’t know that the first 20 even
numbers are from 2 to 20 (like for example if the question asked you to sum up
![Page 48: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/48.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
the first 57 or 396 even numbers!), then the second solution is the more
appropriate one.
For the second solution:
Snew = Sold + 2n
n Old value of s New value of s (s=s+2n)
1 0 2*1+0=2 2 2 2*2+2=6
3 6 2*3+6=12 4 12 2*4+12=20
5 20 2*5+20=30
6 30 2*6+30=42 7 42 2*7+42=56
8 56 2*8+56=72 9 72 2*9+72=90
10 90 2*10+90=110
Note that each time we add an even number; because when n takes the values
1, 2, 3, 4 … 10, 2n takes the values 2, 4, 6, 8 ...20.
Example (3):
Write a function m-file to calculate the factorial of a given integer. Use the
function name “fact”.
Answer:
function f=fact(n) f=1; for i=1:n f=f*i; end
e.g.: The factorial of 5 5! = 5 x 4 x 3 x 2 x 1 = 1 x 2 x 3 x 4 x 5
In general n!= n(n-1)(n-2) … 1
![Page 49: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/49.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Here we initialize f to 1, because any number multiplied by 1 stays as it is.
The loop here keeps the result in f, each iteration it multiplies the previous
value of f to the following integer in the sequence from 1 to n:
To try out the function, do not click “Run”. Instead you go to the command
window and try the function for any value of n – say 5:
>> fact(5)
n f (Old Value) f (New Value) f=f*n
1 1 1*1=1
2 1 1*2=2 3 2 2*3=6
4 6 6*4=24 5 24 24*5=120
The result:
ans = 120
>> fact(0)
In this case we have f=1, then in the loop n=1:0 (so this means a vector whose
starting point is 1 and end point is 0 with a step equal to 1, and 1+1=2 > 0.
Hence n is an empty matrix) and the for-loop is not executed at all, therefore f
remains 1.
ans =1
Indeed: 0!=1
![Page 50: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/50.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
NOTE:
MATLAB actually has built-in functions to do some of the examples introduced
here, but still the examples show you how to create a for-loop and trace the
code.
sum(x) This function sums up the elements of x
factorial(x) This function computes the factorial
Example (3):
Create the vector *1 2 4 8 16 …. 128+
Answer:
A=[]; for i=0:7 A=[A 2^i]; end disp(A)
This is what we do:
1. First we create an empty matrix A (or else when we reach the step inside
the loop A will be undefined).
2. A=[A 2^i] will concatenate the new A and the old A to create the vector
step by step.
To see how it works, we’ll remove the semicolon and display the value of i:
A=[]; for i=0:7 disp('i=') disp(i) A=[A 2^i] end
![Page 51: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/51.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Output:
i= 0 A = 1 i= 1 A = 1 2 i= 2 A = 1 2 4 i= 3 A = 1 2 4 8 i= 4 A = 1 2 4 8 16 i= 5 A = 1 2 4 8 16 32 i= 6 A = 1 2 4 8 16 32 64 i= 7 A = 1 2 4 8 16 32 64 128
![Page 52: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/52.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Example (4):
Write a script to create a 9x8 matrix whose rows are the same as the vector A
in example (3). You’ll need to regenerate A, don’t use a previously created
vector.
Answer:
Here we will use two for loops, one inside the other:
A=[]; for i=1:9 B=[]; for j=0:7 B=[B 2^j]; end A=[A;B]; end disp(A)
1. First we initialize A as an empty matrix.
2. The first loop repeats 9 times, once for each row.
3. The code within the outer loop is the same as the one in example (3),
including initializing the matrix B as an empty matrix to make it ready for
concatenation.
4. After the inner loop is finished, matrix B contains the vector [ 1 2 4
…128+ and is vertically concatenated with A (which starts out as an
empty matrix, then one row, then two and so on…)
5. The last line displays the matrix A
Note: This example is for you to learn how to trace two loops one embedded
inside the other. However, you can create the vector *1 2 4 … 128+ and then
use it in one loop to create the matrix. This way you’ll use two separate loops.
B=[]; for j=0:7 B=[B 2^j]; end A=[]; for i=1:9 A=[A;B]; end disp(A)
![Page 53: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/53.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
Example (5):
Suppose you want to create a script that enables a user who does not know
how to write a matrix using MATLAB to do so by prompting the user to enter
the elements one-by-one. Also, the user should be able to decide the size of
the matrix.
Answer:
m=input('Enter the number of rows: '); n=input('Enter the number of columns: '); A=[]; for i=1:m for j=1:n x=input('Enter the element: '); A(i,j)=x; end end disp(A)
First, we ask the user for the number of rows and columns, and we use these in
the loops:
The outer loops is for the rows and the inner one for the columns
The total number of iterations (number of times the commands inside the
inner loop is repeated) is the product of m and n:
For example: if m=3 and n=5: Total number of iterations = 3x5 = 15
i=1
j=1
j=2
j=3
j=4
j=5
i=2
j=1
j=2
j=3
j=4
j=5
i=3
j=1
j=2
j=3
j=4
j=5
![Page 54: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/54.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
This fills up the matrix A row by row:
A(1,1) = …
A(1,2) = …
A(1,3) = …
and so on…
Example (6):
Write a script using a for-loop to produce the following plot where the
functions drawn are sin(x), sin(2x), sin(3x) and sin(4x):
x=0:0.1:10; for n=1:4 subplot(2,2,n) plot(x,sin(n*x)) end
Do not forget to define x before the loop (if it’s inside, it
doesn’t matter but there’s no use repeating it every iteration if
it’s the same in all plots).
![Page 55: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/55.jpg)
Alexandria University Mathematics 6 Faculty of Engineering March 2013
Lab Notes
MATLAB
Simulink and GUI
Eng. Sara Hassan Kamel
![Page 56: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/56.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
2
I. Simulink
Simulink is a graphical extension to MATLAB for modeling and simulation of
systems. With Simulink, you can build a model for any system and simulate it
using a block diagram.
To open Simulink, click on the indicated icon and wait for the toolboxes to
load:
The Simulink Library will open:
This is where you will find all the blocks you need to build your system.
Simulink Icon
Open New
Model
![Page 57: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/57.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
3
Basically, to simulate a system using Simulink, you need to do the following
steps:
1. Open a new Simulink Model
2. Drag and drop blocks from the Simulink library into the model
3. Adjust the attributes of the blocks
4. Connect the blocks (CTRL + click)
5. Run
Simulink Library:
The library has some basic toolboxes and other specialized toolboxes or
“blocksets” (like Power systems, communications, image processing,
Aerospace … etc.)
For starters, take a look at the following blocksets:
1) Sources: This one contains signal sources which you can use as inputs to
your system; a sine wave, a unit step function, square pulses….
2) Sinks: Contains different blocks to view the output. You can use a scope
(which looks like the screen of an oscilloscope) or a display (if the output is just
a number not a signal). You can also you “To Workspace” or “simout” to
transfer the output value to the workspace as a variable.
The figure below shows the available sinks:
3) Commonly Used Blocks: This is a useful blockset that contains a collection of
some of the most important basic blocks, including some sinks, sources and
mathematical operators.
![Page 58: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/58.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
4
Example:
We start with this simple model as an example of how to use Simulink:
Drag and drop the shown 4 blocks from the Simulink library to the new model.
Sine Wave From “Sources”
Derivative From “Continuous”
Gain From “Commonly Used Blocks” OR “Math Operations”
Scope From “Sinks”
To connect the blocks you can drag a line from each block to the following one
or click on the first block, press CTRL and click on the other block.
When the mouse pointer turns to a “Plus” sign (+) you can start dragging.
After connecting the blocks, the model looks like this:
This is where
you click to
RUN the model
![Page 59: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/59.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
5
To change the parameters of each block, there are two methods you need to
know:
1. Manually, by double-clicking on the block and changing them.
2. Using an m-file to control the blocks with MATLAB commands.
The manual method is easy and straightforward, for example, this is what you
get when clicking on the Sine Wave block:
If you’re using a new block and don’t know how to change the parameters,
click on the HELP button (next to “OK” and “Cancel”).
![Page 60: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/60.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
6
Using an m-file to change the block parameters (attributes):
First, you need to save the model. Having done that, open a new m-file (script)
and use the following functions:
set_param(Name of File/Name of Block, Name of attribute, Value)
The function “set_param” changes the value of a certain parameter. For
example, to change the amplitude of the sine wave to 2 and the gain factor to
0.5 use the following commands (assume the model name is “mysim1”):
set_param('mysim1/Sine Wave','Amplitude','2'); set_param('mysim1/Gain','Gain','0.5');
If you want to run the model using the m-file (instead of clicking the button)
you can use the following command:
sim('mysim1')
NOTE: When you run the file, nothing appears! But this is normal. You need
to double click on the scope in order to view the output after running the
model.
![Page 61: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/61.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
7
Using the SCOPE:
By double clicking on the scope, the output signal will appear in yellow on a
black background. If the output doesn’t fit the window, right click on the figure
and click “Autoscale”.
If you want to view or use the plot OUTSIDE Simulink, click on the “Data
History” tab.
This button takes
you to the scope
parameters
![Page 62: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/62.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
8
Once you have done these settings, when you run the model, the variable
ScopeData appears in the workspace:
Make sure this is
unchecked
Make sure that
“Save Data to
Workspace” is
checked.
The variable name is the name of the variable
that shall appear in the workspace, it should
have two columns, one containing the x-values
and the second containing the y-values.
The format should be “Array” (in order to have
the data in matrix from).
![Page 63: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/63.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
9
This is an example of an m-file to control and run the model. The script also
plots the output using data from the scope:
set_param('mysim1/Sine Wave','Amplitude','3'); set_param('mysim1/Gain','Gain','2'); sim('mysim1') x=ScopeData(:,1); y=ScopeData(:,2); plot(x,y)
Output:
NOTES:
You can search for blocks in the Simulink Library by typing their name in
the search bar.
You can resize, recolor and rename the blocks in the Simulink model as
well as the background. Right click on any of the blocks to view the
options.
You can rotate any block by selecting it and clicking CTRL+R
![Page 64: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/64.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
10
II. Graphical User Interface (GUI) using MATLAB
GUIDE: Graphical User Interface Development Environment
By clicking on the indicated icon, you can access the GUIDE. Use the GUIDE to
create a user-friendly interface, like this for example:
Here’s how to get started: When you click the icon, this appears. Click OK.
GUIDE Icon
![Page 65: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/65.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
11
Example:
The following GUI can plot a variety of functions. You can choose the function
from a drop-down menu. The range of the horizontal axis can be adjusted
using the edit boxes. The radio buttons allow you to choose the color of the
plot (blue or red). The checkbox applies a grid to the figure if checked.
To plot, click the plot button. To clear the figure, click the clear button.
If you want to edit the name or text in any of the GUI elements, double click
the element. The “Property Inspector” appears. Go to the “String” option and
type whatever you want. For the drop-down menu, a new line represents a
new selection.
It is preferable to leave the edit boxes blank. The default text is “Edit Text”.
So go to the property inspector and delete the words “Edit Text” and leave the
string blank. You could also put a default value if you want.
This is where you will
create the interface
These are the elements you can add to your
interface; buttons, axes, edit boxes…etc.
Run the GUI Access the GUI
m-file
![Page 66: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/66.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
12
IMPORTANT: Every element (button, box, menu…) has a Tag listed in the
property inspector. This is the name you will use later to call the element in the
m-file. You can use the default name, or you can rename it to make it easier for
you to remember what the button does when you are writing the m-file that
controls your GUI.
For example, the default tags for the radio buttons are radiobutton1 for the
Red button, and radiobutton2 for the Blue button. You can rename them
redbutton and bluebutton.
![Page 67: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/67.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
13
Now to the important part: Programming your GUI:
1. Save the GUI figure.
2. Once you save it, an m-file appears. If you want to access this m-file later
you can click on the m-file editor button in the figure.
3. The m-file already has lines of code written. DO NOT ERASE THEM!
4. Each GUI element has a section in which you can write your own
commands. For example, if you want to tell the m-file what to do if the
PLOT button is pressed, go to the line that starts with: function pushbutton1_Callback(hObject, eventdata, handles)
Now take a look at how the final m-file: These are the parts of the m-file that were modified: % --- Executes on button press in checkbox1. function checkbox1_Callback(hObject, eventdata, handles) % hObject handle to checkbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) s=get(handles.checkbox1,'value'); axes(handles.axes1); if s==1 grid on else grid off end
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) axes(handles.axes1); x0=str2num(get(handles.edit1,'string')); xf=str2num(get(handles.edit2,'string')); x=x0:0.01:xf; ch1=get(handles.popupmenu1,'value'); switch ch1 case 1 y=sin(x); case 2 y=cos(x); case 3 y=exp(x); case 4 y=log(x); end ch2=get(handles.radiobutton1,'value'); if ch2==1 color='r'; else color='b'; end plot(x,y,color)
![Page 68: MATLAB Notes_PWR.pdf](https://reader034.vdocuments.us/reader034/viewer/2022051622/5695d0101a28ab9b0290c5b0/html5/thumbnails/68.jpg)
MATLAB Notes By: Eng. Sara Hassan Kamel
14
% --- Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) % hObject handle to pushbutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) cla set(handles.edit1,'string',''); set(handles.edit2,'string',''); set(handles.popupmenu1,'value',1); set(handles.checkbox1,'value',0); set(handles.radiobutton1,'value',1); set(handles.radiobutton2,'value',0); axes(handles.axes1); grid off
As you can see, the only buttons that need modifications in the m-file are the PLOT, CLEAR and Grid on/off buttons. More about the functions used: set To change or set the value of an element (on/off, change the text…etc.) get To get the data entered by the user from the GUI (checked/unchecked, text, which selection…etc.) cla Clear Axes axes To call the axes; you need to use this before you plot. If you have more than one plotting regions, you need this to specify which one the program should use. str2num Converts a string to a number. The opposite is num2str.
To run the GUI, click the “Run” button in the GUI figure, NOT the m-file!
Also, if you want to open the figure again anytime, you must do so using the GUIDE and clicking the “Existing GUI” tab then searching for your file from there, not just double clicking the figure file. One final note: If you want to send the GUI or transfer it from one place to another, you must send or transfer BOTH the figure AND the m-file.