0% found this document useful (0 votes)
20 views51 pages

Lec 5

The document provides an overview of MATLAB functionalities, including documentation, useful commands, GUI creation, and Simulink for system modeling. It covers various commands for simplifying tasks, creating graphical user interfaces, and using Simulink for simulations. Additionally, it discusses symbolic mathematics in MATLAB, highlighting the advantages and operations of symbolic variables and expressions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views51 pages

Lec 5

The document provides an overview of MATLAB functionalities, including documentation, useful commands, GUI creation, and Simulink for system modeling. It covers various commands for simplifying tasks, creating graphical user interfaces, and using Simulink for simulations. Additionally, it discusses symbolic mathematics in MATLAB, highlighting the advantages and operations of symbolic variables and expressions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 51

Outline

• Documentation
• Misc. Useful Functions
• Graphical User Interfaces
• Simulink
• Symbolic Toolbox
• Image Processing
• Hardware Interface

2
Official Documentation
• http://www.mathworks.com/help/matlab/

Courtesy of The MathWorks, Inc. Used with permission. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See
www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their
respective holders.
Miscellaneous Matlab (1)

• The command deal can make variable initialization simpler


» [x, y, z] = deal(zeros(20, 30));
» [a, b, c, d] = 5;
» [m, n] = deal(1, 100);
• The command eval can execute a string!
» a1 = 1; n = 1;
» eval([‘a’ num2str(n) ‘ = 5;’]);
» disp([‘a1 is now ‘ num2str(a1)]);
• The command repmat can create replicas easily
» A = repmat([1 2;3 4], 2, 2);
• Execute Perl scripts using the command perl
» perl(‘myPerlFile.pl’);

4
Miscellaneous Matlab (2)

• Use regexp for powerful regular expression operations


» str = ‘The staff email is [email protected]’;
» pat = '([\w-.])+@([\w-.])+‘;
» r = regexp(str, pat, 'tokens')
» name = r{1}{1}; % name = ‘6.057-staff’
» domain = r{1}{2}; % domain = ‘mit.edu’
• Set the root defaults by using the handle 0
» get(0, ‘Default’)
» set(0, ‘DefaultLineLineWidth’, 2);
• Edit the datatip text display function to show customized
information
• You can also import Java classes (but don’t)
» import java.util.Scanner
• If you’re not sure about something – just ask Matlab why
Making GUIs
• It's really easy to make a graphical user interface in Matlab
• To open the graphical user interface development
environment, type guide
» guide
• Select Blank GUI

MATLAB version 6. . ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive olders.
Draw the GUI
• Select objects from the left, and draw them where you
want them

MATLAB version 6. . ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive olders.
Change Object Settings
• Double-click on objects to open the Inspector. Here you can
change all the object's properties.

MATLAB version 6. . ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive olders.
Save the GUI
• When you have modified all the properties, you can save
the GUI
• Matlab saves the GUI as a .fig file, and generates an m-file!

10

MATLAB version 6. . ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive olders.
Add Functionality to M-File
• To add functionality to your buttons, add commands to the
'Callback' functions in the m-file. For example, when the
user clicks the Draw Image button, the
drawimage_Callback function will be called and executed
• All the data for the GUI is stored in the handles, so use set
and get to get data and change it if necessary
• Any time you change the handles, save it using guidata
» guidata(handles.Figure1,handles);

11

MATLAB version 6. . ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive olders.
Running the GUI
• To run the GUI, just type its name in the command window
and the GUI will pop up. The debugger is really helpful for
writing GUIs because it lets you see inside the GUI

12

MATLAB version 6. . ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive olders.
GUI Helper Functions

• Use keyboard to allow debugging from command window.


GUI variables will appear in the workspace. Use return to
exit debug mode
• Use built-in GUI modals for user input:
» uigetfile
» uiputfile
» inputdlg
•And more… (see help for details)

13
SIMULINK

• Interactive graphical environment


• Block diagram based MATLAB add-on environment
• Design, simulate, implement, and test control, signal
processing, communications, and other time-varying
systems

14

Simulink .0. . ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive olders.
Getting Started

• In MATLAB,
Start
art Simulink

•Create a new
Simulink file,
similar to how
you make a new
script

15

MATLAB R2019b and Simulink 7.1. ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive
olders.
Simulink Library Browser
• The Library Browser contains various blocks that you can
put into your model
• Examine some blocks:
! Click on a library: “Sources”
– Drag a block into Simulink: “Band limited white noise”
! Visualize the block by going into “Sinks”
– Drag a “Scope” into Simulink

16

MATLAB version 7.6.0 and Simulink 7.1. ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks
n . See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir
res e tive olders.
Connections
• Click on the carat/arrow on the right of the band
limited white noise box

• Drag the line to the scope


! You’ll get a hint saying you can quickly connect
blocks by hitting Ctrl
! Connections between lines represent signals

• Click the play button

• Double click on the scope.


! This will open up a chart of the variable over the
simulation time 17

Simulink 7.1. ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive
olders.
Connections, Block Specification
• To split connections, hold down ‘Ctrl’ when clicking on a
connection, and drag it to the target block; or drag
backwards from the target block
• To modify properties of a block, double-click it and fill in
the property values.

18
Simulink 7.1. ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive
olders.
Behind the curtain
• Go to “Simulation”->”Configuration Parameters”
at the top menu
See ode45? Change the solver type here

19

Simulink 7.1. ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive
olders.
Exercise: Bouncing Ball Model

• Let’s consider the following 1 dimensional problem


• A rubber ball is thrown from height h0 with initial velocity
v0 in the z-axis (up/down).
• When the ball hits the ground (z=0), its velocity
instantaneously flips direction and is attenuated by the
impact

v0
v
g

h0
κv

20
Exercise: Bouncing Ball Model

• Let’s consider the following 1 dimensional problem


• A rubber ball is thrown from height h0 with initial velocity
v0 in the z-axis (up/down).
• When the ball hits the ground (z=0), its velocity
instantaneously flips direction and is attenuated by the
impact
d 2z
m 2 = mg v ( t ) =
dt
dz
dt
v t+( z=0
) (
= -k v t -
z=0
)
z ( t = 0 ) = h0 v ( t = 0 ) = v0
• Integrating, we can obtain the balls height and velocity as a
function of time
t t
v ( t ) = ò gdt z ( t ) = ò v (t ) dt
0 0 21
Exercise: Simulink Model
• Using the second order integrator with limits and reset,
our model will look like this

22
Simulink 7.1. ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive
olders.
Exercise: Simulink Results
• Running the model yields the balls height and velocity as a
function of time

23
Simulink 7.1. ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n . See
.mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir res e tive
olders.
Toolboxes

• Math
• Takes the signal and performs a math operation
» Add, subtract, round, multiply, gain, angle
• Continuous
• Adds differential equations to the system
» Integrals, Derivatives, Transfer Functions,
State Space
• Discontinuities
• Adds nonlinearities to your system
• Discrete
• Simulates discrete difference equations
• Useful for digital systems

24
Building systems

• Sources
» Step input, white noise, custom input, sine
wave, ramp input,
• Provides input to your system
• Sinks
» Scope: Outputs to plot
» simout: Outputs to a MATLAB vector (struct) on
workspace
» Matlab mat file

25
Symbolic Toolbox

• Don’t do nasty calculations by hand!


• Symbolics vs. Numerics

Advantages Disadvantages

Symbolic •Analytical solutions •Sometimes can't be


•Lets you intuit solved
things about •Can be overly
solution form complicated
Numeric •Always get a •Hard to extract a
solution deeper understanding
•Can make solutions •Num. methods
accurate sometimes fail
•Easy to code •Can take a while to
compute
26
Symbolic Variables

• Symbolic variables are a type, like double or char

• To make symbolic variables, use sym


» a=sym('1/3');
» b=sym('4/5');
» mat=sym([1 2;3 4]);
• fractions remain as fractions
» c=sym('c','positive');
• can add tags to narrow down scope
• see help sym for a list of tags

• Or use syms
» syms x y real
• shorthand for x=sym('x','real'); y=sym('y','real');
27
Symbolic Expressions

• Multiply, add, divide expressions


» d=a*b
• does 1/3*4/5=4/15;

» expand((a-c)^2);
• multiplies out

» factor(ans)
• factors the expression

» pretty(ans)
• makes it look nicer

28
Cleaning up Symbolic Statements

» collect(3*x+4*y-1/3*x^2-x+3/2*y)
• collects terms

» simplify(cos(x)^2+sin(x)^2)
• simplifies expressions

» subs('c^2',c,5)
• replaces variables with numbers
or expressions. To do multiple substitutions
pass a cell of variable names followed by a cell of values
» subs('c^2',c,x/7)

29
More Symbolic Operations

• We can do symbolics with matrices too


» mat=sym('[a b;c d]');
» mat=sym('A%d%d', [2 2]);
• symbolic matrix of specified size

» mat2=mat*[1 3;4 -2];


• compute the product
» d=det(mat)
• compute the determinant
» i=inv(mat)
• find the inverse

• You can access symbolic matrix elements as before


» i(1,2)
30
Exercise: Symbolics

• The equation of a circle of radius r centered at (a,b) is


given by: ( x - a ) + ( y - b ) = r
2 2 2

• Use solve to solve this equation for x and then for y

• It’s always annoying to integrate by parts. Use int to do


the following integral symbolically and then compute the
value by substituting 0 for a and 2 for b: b
ò dx
x
xe
a

31
Exercise: Symbolics

• The equation of a circle of radius r centered at (a,b) is


given by: ( x - a ) + ( y - b ) = r
2 2 2

• Use solve to solve this equation for x and then for y

» syms a b r x y
» solve('(x-a)^2+(y-b)^2=r^2','x')
» solve('(x-a)^2+(y-b)^2=r^2','y')

• It’s always annoying to integrate by parts. Use int to do


the following integral symbolically and then compute the
value by substituting 0 for a and 2 for b: b
ò dx
x
xe
a
» Q=int('x*exp(x)',a,b)
» subs(Q,{a,b},{0,2})
32
Image Processing
• http://www.mathworks.com/help/images/index.html

33
Courtesy of The MathWorks, Inc. Used with permission. MATLAB and Simulink are registered trademarks of The MathWorks, Inc.
See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their
respective holders.
Image Processing

• Image enhancement
• Adjust image contrast, intensities, etc.
• Filtering and deblurring
• Convolution and deconvolution

• Finding edges
• Image gradient, edge
• Finding circles
• Hough transform

• Training an object detector


• Computer vision toolbox: trainCascadeObjectDetector

34
Image Processing
• Image Restoration
• Denoising

• Image Enhancement & Analysis


• Contrast Improvement
– imadjust, histeq, adapthisteq

• Edge Detection
– edge

• Image Sharpening
• Image Segmentation

• Image Compression
35
• Wavelet toolbox (Chap. 3 of Gonzalez book on DIP)
Lena ima e la o . All ri ts reserved. T is ontent is e luded rom our reative ommons li ense. or more in ormation see tt s o .mit.edu el a air use
Exercise: Contrast Improvement

• In this exercise, first we want to load the image


“pout.tif”. You can use imread.

• Then for a better comparison we want our image


to have a width of 200 pixels. Use imresize

• Finally, we want to compare the results of three


functions imadjust, histeq, adapthisteq for
contrast enhancement. Display the original image
and the three enhanced images in a single figure.

36
Exercise: Contrast Improvement
» % Loading the our image into the workspace
» Image = imread('pout.tif');
»
» % For comparison, it is better to have a predefined width
» width = 200;
»
» % Resizing the image using bicubic interpolation
» dim = size(Image);
» Image = imresize(Image , width * [dim(1) / dim(2) 1] , 'bicubic');
»
» % Adjusting the contrast using imadjust
» Image_imadjust = imadjust(Image);
»
» % Adjusting the contrast using histogram equalization
» Image_histeq = histeq(Image);
»
» % Adjusting the contrast using adaptive histogram equalization
» Image_adapthisteq = adapthisteq(Image);
»

37
Exercise: Contrast Improvement
» % Displaying the original image and the results in a single figure to compare with each other
» figure
» subplot(2 , 2 , 1);
» imshow(Image);
» title('Original Image');
»
» subplot(2 , 2 , 2);
» imshow(Image_imadjust);
» title('Enhanced Image using Imadjust');
»
» subplot(2 , 2 , 3);
» imshow(Image_histeq);
» title('Enhanced Image using Histeq');
»
» subplot(2 , 2 , 4);
» imshow(Image_adapthisteq);
» title('Enhanced Image using Adapthisteq');

38
Exercise: Contrast Improvement

Original Image Enhanced Image using Imadjust

Enhanced Image using Histeq Enhanced Image using Adapthisteq

39
ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir
res e tive olders.
Exercise: Edge Detection

• We know that edge detection is mainly highpass


filtering the image.

• First load the image “circuit.tif” and then plot the


edges in that figure using the function edge and
the filters “sobel”, “prewitt”. Also use
“canny” as another method for edge detection
using edge.

40
Exercise: Edge Detection
» I = imread('circuit.tif');
» I1 = edge(I , 'sobel');
» I2 = edge(I , 'canny');
» I3 = edge(I , 'prewitt');
»
» figure
» subplot(2 , 2 , 1);
» imshow(I);
» title('Original Image');
»
» subplot(2 , 2 , 2);
» imshow(I1);
» title('Edges found using sobel filter');
»
» subplot(2 , 2 , 3);
» imshow(I2);
» title('Edges found using the "canny" method');
»
» subplot(2 , 2 , 4);
» imshow(I3);
» title('Edges found using prewitt filter');
41
Exercise: Edge Detection
Original Image Edges found using sobel filter

Edges found using the "canny" method Edges found using prewitt filter

42
Steve e ker and S u aat adeem. All ri ts reserved. T is ontent is e luded rom our reative ommons li ense. or more in ormation
see tt s o .mit.edu el a air use
Image Enhancement

• Commonly-used: imread, imwrite, imshow, imresize


» im = imread('pout.tif');
% image included in toolbox
» imtool(im);
• Convenient for editing in figure window

• Adjust intensity values / colormap


» imadjust(im);
• Increase contrast
(1% of data saturated at low/high intensities)
» imadjust(im,[.4 .6],[0 1]);
• Clips off intensities below .4 and above .6
Stretches resulting intensities to 0 and 1
• What happens if used [1 0] instead of [0 1]?
• Also works for RGB; see doc
43

ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir
res e tive olders.
Filtering and Deblurring
Pillbox filter:
f = fspecial('disk',10);
imblur = imfilter(im,f);
deconvblind(imblur,f);

Linear motion blur:


f=fspecial('motion’,30,135);
imblur = imfilter(im,f);
deconvblind(imblur,f);

44

Lena ima e la o . All ri ts reserved. T is ontent is e luded rom our reative ommons li ense. or more in ormation see tt s o .mit.edu el a air use
Finding Edges

• Image gradients: imgradient, imgradientxy


• Application: edge
» edge(im); % Sobel
» edge(im, 'canny');
• Images must be in grayscale
» rgb2gray

Original
(coins.png) Sobel Laplacian Canny

oins ima e ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
45
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir
res e tive olders.
Lena ima e la o . All ri ts reserved. T is ontent is e luded rom our reative ommons li ense. or more in ormation see tt s o .mit.edu el a air use
Other Cool Stuff

• Finding circles
» im = imread('coins.png');
» [centers,radii,metric] = imfindcircles(im, [15 30]);
• Finds circles with radii within range, ordered by strength
» imshow(im)
» viscircles(centers(1:5,:), radii(1:5));

• Extract other shapes


with Hough transform

46
ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o t eir
res e tive olders.
… and also Computer Vision
• http://www.mathworks.com/help/vision/index.html

47

ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o
t eir res e tive olders.
… and also Computer Vision
• http://www.mathworks.com/help/vision/functionlist.html

Also consider OpenCV+MATLAB


http://www.mathworks.com/dis
covery/matlab-opencv.html
48

ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks
o t eir res e tive olders.
Object Detection

• Train a cascade object detector (introduced in R2013a)


• http://www.mathworks.com/help/vision/ug/train-a-cascade-object-detector.html
• http://www.mathworks.com/help/vision/ref/traincascadeobjectdetector.html

• Inputs to trainCascadeObjectDetector:
• Image files with bounding boxes for positive instances
• Image files of negative instances (‘background’)
• Optional: FP/TP rates, # cascade stages, feature type
• Output: An XML file with object detector parameters
» detector=vision.CascadeObjectDetector('my.xml');

• Use the detector on new images:


» bbox=step(detector, imread('testImage.jpg'));
• See links above for full example
49
Machine Learning (Stats Toolbox)
• http://www.mathworks.com/help/stats/index.html

50

48

ourtes o T e Mat orks n . sed it ermission. MATLAB and Simulink are re istered trademarks o T e Mat orks n .
See .mat orks. om trademarks or a list o additional trademarks. t er rodu t or rand names ma e trademarks or re istered trademarks o
t eir res e tive olders.
Hardware Interface

• Matlab can interact directly with many forms of external


hardware, from lab equipment to standalone micro-
controllers
• Interaction can be done at various levels of abstraction
• Ideal when processor intensive DSP is required and target
system cannot handle it on it’s own
• Probably not suitable for real-time systems due to the
communication overhead

51
Low Level

• Most basic link – through the serial port using serial


» s = serial(‘com3’)
• Can also provide additional properties,
see help serial
• From here on, treat s as a file handler
» fopen(s)
» fwrite(s, data)
» fprintf(s, ‘string’);
» res = fscanf(s);
• Don’t forget to close!
» fclose(s);

52
GPIB

• GPIB – General Purpose Interface Bus (IEEE-488)


• Created by HP in the 1960’s, but highly adopted today in
many lab instruments
• A standardized communication protocol for sending and
receiving information
• Simply create using the command gpib
» g = gpib(‘agilent’, 7, 1);
• See help gpib for option details
• From now on, treat as file handler
» fopen(g);
» fprintf(g, ‘*IDN?’)
» idn = fscanf(g);
• Don’t forget to close!
» fclose(g);
53

You might also like