SlideShare a Scribd company logo
6.094
Introduction to programming in MATLAB
Danilo Šćepanović
IAP 2010
Lecture 2: Visualization and Programming
Outline
(1) Functions
(2) Flow Control
(3) Line Plots
(4) Image/Surface Plots
(5) Vectorization
User-defined Functions
• Functions look exactly like scripts, but for ONE difference
Functions must have a function declaration
Help file
Function declaration
InputsOutputs
Courtesy of The MathWorks, Inc. Used with permission.
User-defined Functions
• Some comments about the function declaration
• No need for return: MATLAB 'returns' the variables whose
names match those in the function declaration
• Variable scope: Any variables created within the function
but not returned disappear after the function stops running
function [x, y, z] = funName(in1, in2)
Must have the reserved
word: function
Function name should
match MATLAB file
name
If more than one output,
must be in brackets
Inputs must be specified
Functions: overloading
• We're familiar with
» zeros
» size
» length
» sum
• Look at the help file for size by typing
» help size
• The help file describes several ways to invoke the function
D = SIZE(X)
[M,N] = SIZE(X)
[M1,M2,M3,...,MN] = SIZE(X)
M = SIZE(X,DIM)
Functions: overloading
• MATLAB functions are generally overloaded
Can take a variable number of inputs
Can return a variable number of outputs
• What would the following commands return:
» a=zeros(2,4,8); %n-dimensional matrices are OK
» D=size(a)
» [m,n]=size(a)
» [x,y,z]=size(a)
» m2=size(a,2)
• You can overload your own functions by having variable
input and output arguments (see varargin, nargin,
varargout, nargout)
Functions: Excercise
• Write a function with the following declaration:
function plotSin(f1)
• In the function, plot a sin wave with frequency f1, on the
range [0,2π]:
• To get good sampling, use 16 points per period.
( )1sin f x
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Outline
(1) Functions
(2) Flow Control
(3) Line Plots
(4) Image/Surface Plots
(5) Vectorization
Relational Operators
• MATLAB uses mostly standard relational operators
equal ==
not equal ~=
greater than >
less than <
greater or equal >=
less or equal <=
• Logical operators elementwise short-circuit (scalars)
And & &&
Or | ||
Not ~
Xor xor
All true all
Any true any
• Boolean values: zero is false, nonzero is true
• See help . for a detailed list of operators
if/else/elseif
• Basic flow-control, common to all languages
• MATLAB syntax is somewhat unique
IF
if cond
commands
end
ELSE
if cond
commands1
else
commands2
end
ELSEIF
if cond1
commands1
elseif cond2
commands2
else
commands3
end
• No need for parentheses: command blocks are between
reserved words
Conditional statement:
evaluates to true or false
for
• for loops: use for a known number of iterations
• MATLAB syntax:
for n=1:100
commands
end
• The loop variable
Is defined as a vector
Is a scalar within the command block
Does not have to have consecutive values (but it's usually
cleaner if they're consecutive)
• The command block
Anything between the for line and the end
Loop variable
Command block
while
• The while is like a more general for loop:
Don't need to know number of iterations
• The command block will execute while the conditional
expression is true
• Beware of infinite loops!
WHILE
while cond
commands
end
Exercise: Conditionals
• Modify your plotSin(f1) function to take two inputs: plotSin(f1,f2)
• If the number of input arguments is 1, execute the plot command
you wrote before. Otherwise, display the line 'Two inputs were
given'
• Hint: the number of input arguments are in the built-in variable
nargin
Outline
(1) Functions
(2) Flow Control
(3) Line Plots
(4) Image/Surface Plots
(5) Vectorization
Plot Options
• Can change the line color, marker style, and line style by
adding a string argument
» plot(x,y,’k.-’);
• Can plot without connecting the dots by omitting line style
argument
» plot(x,y,’.’)
• Look at help plot for a full list of colors, markers, and
linestyles
color marker line-style
Playing with the Plot
to select lines
and delete or
change
properties
to zoom in/out
to slide the plot
around
to see all plot
tools at once
Courtesy of The MathWorks, Inc. Used with permission.
Line and Marker Options
• Everything on a line can be customized
» plot(x,y,'--s','LineWidth',2,...
'Color', [1 0 0], ...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
• See doc line_props for a full list of
properties that can be specified
-4 -3 -2 -1 0 1 2 3 4
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
You can set colors by using
a vector of [R G B] values
or a predefined color
character like 'g', 'k', etc.
Cartesian Plots
• We have already seen the plot function
» x=-pi:pi/100:pi;
» y=cos(4*x).*sin(10*x).*exp(-abs(x));
» plot(x,y,'k-');
• The same syntax applies for semilog and loglog plots
» semilogx(x,y,'k');
» semilogy(y,'r.-');
» loglog(x,y);
• For example:
» x=0:100;
» semilogy(x,exp(x),'k.-');
0 10 20 30 40 50 60 70 80 90 100
10
0
10
10
10
20
10
30
10
40
10
50
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
-10
-5
0
5
10
3D Line Plots
• We can plot in 3 dimensions just as easily as in 2
» time=0:0.001:4*pi;
» x=sin(time);
» y=cos(time);
» z=time;
» plot3(x,y,z,'k','LineWidth',2);
» zlabel('Time');
• Use tools on figure to rotate it
• Can set limits on all 3 axes
» xlim, ylim, zlim
Axis Modes
• Built-in axis modes
» axis square
makes the current axis look like a box
» axis tight
fits axes to data
» axis equal
makes x and y scales the same
» axis xy
puts the origin in the bottom left corner (default for plots)
» axis ij
puts the origin in the top left corner (default for
matrices/images)
Multiple Plots in one Figure
• To have multiple axes in one figure
» subplot(2,3,1)
makes a figure with 2 rows and three columns of axes, and
activates the first axis for plotting
each axis can have labels, a legend, and a title
» subplot(2,3,4:6)
activating a range of axes fuses them into one
• To close existing figures
» close([1 3])
closes figures 1 and 3
» close all
closes all figures (useful in scripts/functions)
Copy/Paste Figures
• Figures can be pasted into other apps (word, ppt, etc)
• Edit copy options figure copy template
Change font sizes, line properties; presets for word and ppt
• Edit copy figure to copy figure
• Paste into document of interest
Courtesy of The MathWorks, Inc. Used with permission.
Saving Figures
• Figures can be saved in many formats. The common ones
are:
.fig preserves all
information
.bmp uncompressed
image
.eps high-quality
scaleable format
.pdf compressed
image
Courtesy of The MathWorks, Inc. Used with permission.
Advanced Plotting: Exercise
• Modify the plot command in your plotSin function to use
squares as markers and a dashed red line of thickness 2
as the line. Set the marker face color to be black
(properties are LineWidth, MarkerFaceColor)
• If there are 2 inputs, open a new figure with 2 axes, one on
top of the other (not side by side), and activate the top one
(subplot)
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
0.2
0.4
0.6
0.8
1
plotSin(6) plotSin(1,2)
Outline
(1) Functions
(2) Flow Control
(3) Line Plots
(4) Image/Surface Plots
(5) Vectorization
Visualizing matrices
• Any matrix can be visualized as an image
» mat=reshape(1:10000,100,100);
» imagesc(mat);
» colorbar
• imagesc automatically scales the values to span the entire
colormap
• Can set limits for the color axis (analogous to xlim, ylim)
» caxis([3000 7000])
Colormaps
• You can change the colormap:
» imagesc(mat)
default map is jet
» colormap(gray)
» colormap(cool)
» colormap(hot(256))
• See help hot for a list
• Can define custom colormap
» map=zeros(256,3);
» map(:,2)=(0:255)/255;
» colormap(map);
Surface Plots
• It is more common to visualize surfaces in 3D
• Example:
• surf puts vertices at specified points in space x,y,z, and
connects all the vertices to make a surface
• The vertices can be denoted by matrices X,Y,Z
• How can we make these matrices
loop (DUMB)
built-in function: meshgrid
( ) ( ) ( )
[ ] [ ]
f x,y sin x cos y
x , ; y ,π π π π
=
∈ − ∈ −
2 4 6 8 10 12 14 16 18 20
2
4
6
8
10
12
14
16
18
20 -3
-2
-1
0
1
2
3
2 4 6 8 10 12 14 16 18 20
2
4
6
8
10
12
14
16
18
20 -3
-2
-1
0
1
2
3
surf
• Make the x and y vectors
» x=-pi:0.1:pi;
» y=-pi:0.1:pi;
• Use meshgrid to make matrices (this is the same as loop)
» [X,Y]=meshgrid(x,y);
• To get function values,
evaluate the matrices
» Z =sin(X).*cos(Y);
• Plot the surface
» surf(X,Y,Z)
» surf(x,y,Z);
surf Options
• See help surf for more options
• There are three types of surface shading
» shading faceted
» shading flat
» shading interp
• You can change colormaps
» colormap(gray)
contour
• You can make surfaces two-dimensional by using contour
» contour(X,Y,Z,'LineWidth',2)
takes same arguments as surf
color indicates height
can modify linestyle properties
can set colormap
» hold on
» mesh(X,Y,Z)
Exercise: 3-D Plots
• Modify plotSin to do the following:
• If two inputs are given, evaluate the following function:
• y should be just like x, but using f2. (use meshgrid to get
the X and Y matrices)
• In the top axis of your subplot, display an image of the Z
matrix. Display the colorbar and use a hot colormap. Set
the axis to xy (imagesc, colormap, colorbar, axis)
• In the bottom axis of the subplot, plot the 3-D surface of Z
(surf)
( ) ( )1 2sin sinZ f x f y= +
Specialized Plotting Functions
• MATLAB has a lot of specialized plotting functions
• polar-to make polar plots
» polar(0:0.01:2*pi,cos((0:0.01:2*pi)*2))
• bar-to make bar graphs
» bar(1:10,rand(1,10));
• quiver-to add velocity vectors to a plot
» [X,Y]=meshgrid(1:10,1:10);
» quiver(X,Y,rand(10),rand(10));
• stairs-plot piecewise constant functions
» stairs(1:10,rand(1,10));
• fill-draws and fills a polygon with specified vertices
» fill([0 1 0.5],[0 0 1],'r');
• see help on these functions for syntax
• doc specgraph – for a complete list
Outline
(1) Functions
(2) Flow Control
(3) Line Plots
(4) Image/Surface Plots
(5) Vectorization
Revisiting find
• find is a very important function
Returns indices of nonzero values
Can simplify code and help avoid loops
• Basic syntax: index=find(cond)
» x=rand(1,100);
» inds = find(x>0.4 & x<0.6);
• inds will contain the indices at which x has values between
0.4 and 0.6. This is what happens:
x>0.4 returns a vector with 1 where true and 0 where false
x<0.6 returns a similar vector
The & combines the two vectors using an and
The find returns the indices of the 1's
Example: Avoiding Loops
• Given x= sin(linspace(0,10*pi,100)), how many of the
entries are positive?
Using a loop and if/else
count=0;
for n=1:length(x)
if x(n)>0
count=count+1;
end
end
Being more clever
count=length(find(x>0));
length(x) Loop time Find time
100 0.01 0
10,000 0.1 0
100,000 0.22 0
1,000,000 1.5 0.04
• Avoid loops!
• Built-in functions will make it faster to write and execute
Efficient Code
• Avoid loops
This is referred to as vectorization
• Vectorized code is more efficient for MATLAB
• Use indexing and matrix operations to avoid loops
• For example, to sum up every two consecutive terms:
» a=rand(1,100);
» b=zeros(1,100);
» for n=1:100
» if n==1
» b(n)=a(n);
» else
» b(n)=a(n-1)+a(n);
» end
» end
Slow and complicated
» a=rand(1,100);
» b=[0 a(1:end-1)]+a;
Efficient and clean.
Can also do this using
conv
End of Lecture 2
(1) Functions
(2) Flow Control
(3) Line Plots
(4) Image/Surface Plots
(5) Vectorization
Vectorization makes
coding fun!
MIT OpenCourseWare
http://ocw.mit.edu
6.094 Introduction to MATLAB®
January (IAP) 2010
For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.
Ad

Recommended

Lec2
Lec2
Amba Research
 
Lectures r-graphics
Lectures r-graphics
etyca
 
3rd Seminar
3rd Seminar
ChristinaSaweres
 
Computer Graphics Unit 1
Computer Graphics Unit 1
aravindangc
 
Computer algebra-system-maple
Computer algebra-system-maple
Азат Ажибеков
 
Scala collection methods flatMap and flatten are more powerful than monadic f...
Scala collection methods flatMap and flatten are more powerful than monadic f...
Philip Schwarz
 
DASH: A C++ PGAS Library for Distributed Data Structures and Parallel Algorit...
DASH: A C++ PGAS Library for Distributed Data Structures and Parallel Algorit...
Menlo Systems GmbH
 
Seminar PSU 09.04.2013 - 10.04.2013 MiFIT, Arbuzov Vyacheslav
Seminar PSU 09.04.2013 - 10.04.2013 MiFIT, Arbuzov Vyacheslav
Vyacheslav Arbuzov
 
Perm winter school 2014.01.31
Perm winter school 2014.01.31
Vyacheslav Arbuzov
 
Geometry Shader-based Bump Mapping Setup
Geometry Shader-based Bump Mapping Setup
Mark Kilgard
 
CS 354 Graphics Math
CS 354 Graphics Math
Mark Kilgard
 
Data Visualization 2020_21
Data Visualization 2020_21
Sangita Panchal
 
R graphics
R graphics
DHIVYADEVAKI
 
Image processing with matlab
Image processing with matlab
neetirajsinh
 
Data Wrangling with dplyr and tidyr Cheat Sheet
Data Wrangling with dplyr and tidyr Cheat Sheet
Dr. Volkan OBAN
 
Java applet handouts
Java applet handouts
iamkim
 
Functor Laws
Functor Laws
Philip Schwarz
 
Seminar psu 20.10.2013
Seminar psu 20.10.2013
Vyacheslav Arbuzov
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
Mark Kilgard
 
DataFrame in Python Pandas
DataFrame in Python Pandas
Sangita Panchal
 
Pandas Series
Pandas Series
Sangita Panchal
 
Output primitives computer graphics c version
Output primitives computer graphics c version
Marwa Al-Rikaby
 
Surpac geological modelling 3
Surpac geological modelling 3
Adi Handarbeni
 
Introduction to r
Introduction to r
Golden Julie Jesus
 
Introductory Digital Image Processing using Matlab, IIT Roorkee
Introductory Digital Image Processing using Matlab, IIT Roorkee
Vinayak Sahai
 
Image processing using matlab
Image processing using matlab
SangeethaSasi1
 
COMPUTER GRAPHICS
COMPUTER GRAPHICS
Jagan Raja
 
The Essence of the Iterator Pattern (pdf)
The Essence of the Iterator Pattern (pdf)
Eric Torreborre
 
Coursee
Coursee
Aqua Pie
 
Matlab for diploma students(1)
Matlab for diploma students(1)
Retheesh Raj
 

More Related Content

What's hot (20)

Perm winter school 2014.01.31
Perm winter school 2014.01.31
Vyacheslav Arbuzov
 
Geometry Shader-based Bump Mapping Setup
Geometry Shader-based Bump Mapping Setup
Mark Kilgard
 
CS 354 Graphics Math
CS 354 Graphics Math
Mark Kilgard
 
Data Visualization 2020_21
Data Visualization 2020_21
Sangita Panchal
 
R graphics
R graphics
DHIVYADEVAKI
 
Image processing with matlab
Image processing with matlab
neetirajsinh
 
Data Wrangling with dplyr and tidyr Cheat Sheet
Data Wrangling with dplyr and tidyr Cheat Sheet
Dr. Volkan OBAN
 
Java applet handouts
Java applet handouts
iamkim
 
Functor Laws
Functor Laws
Philip Schwarz
 
Seminar psu 20.10.2013
Seminar psu 20.10.2013
Vyacheslav Arbuzov
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
Mark Kilgard
 
DataFrame in Python Pandas
DataFrame in Python Pandas
Sangita Panchal
 
Pandas Series
Pandas Series
Sangita Panchal
 
Output primitives computer graphics c version
Output primitives computer graphics c version
Marwa Al-Rikaby
 
Surpac geological modelling 3
Surpac geological modelling 3
Adi Handarbeni
 
Introduction to r
Introduction to r
Golden Julie Jesus
 
Introductory Digital Image Processing using Matlab, IIT Roorkee
Introductory Digital Image Processing using Matlab, IIT Roorkee
Vinayak Sahai
 
Image processing using matlab
Image processing using matlab
SangeethaSasi1
 
COMPUTER GRAPHICS
COMPUTER GRAPHICS
Jagan Raja
 
The Essence of the Iterator Pattern (pdf)
The Essence of the Iterator Pattern (pdf)
Eric Torreborre
 
Geometry Shader-based Bump Mapping Setup
Geometry Shader-based Bump Mapping Setup
Mark Kilgard
 
CS 354 Graphics Math
CS 354 Graphics Math
Mark Kilgard
 
Data Visualization 2020_21
Data Visualization 2020_21
Sangita Panchal
 
Image processing with matlab
Image processing with matlab
neetirajsinh
 
Data Wrangling with dplyr and tidyr Cheat Sheet
Data Wrangling with dplyr and tidyr Cheat Sheet
Dr. Volkan OBAN
 
Java applet handouts
Java applet handouts
iamkim
 
CS 354 Transformation, Clipping, and Culling
CS 354 Transformation, Clipping, and Culling
Mark Kilgard
 
DataFrame in Python Pandas
DataFrame in Python Pandas
Sangita Panchal
 
Output primitives computer graphics c version
Output primitives computer graphics c version
Marwa Al-Rikaby
 
Surpac geological modelling 3
Surpac geological modelling 3
Adi Handarbeni
 
Introductory Digital Image Processing using Matlab, IIT Roorkee
Introductory Digital Image Processing using Matlab, IIT Roorkee
Vinayak Sahai
 
Image processing using matlab
Image processing using matlab
SangeethaSasi1
 
COMPUTER GRAPHICS
COMPUTER GRAPHICS
Jagan Raja
 
The Essence of the Iterator Pattern (pdf)
The Essence of the Iterator Pattern (pdf)
Eric Torreborre
 

Viewers also liked (10)

Coursee
Coursee
Aqua Pie
 
Matlab for diploma students(1)
Matlab for diploma students(1)
Retheesh Raj
 
Mit6 094 iap10_lec01
Mit6 094 iap10_lec01
Tribhuwan Pant
 
Basics of programming in matlab
Basics of programming in matlab
AKANKSHA GUPTA
 
Matlab programming project
Matlab programming project
Assignmentpedia
 
Lecture 19 matlab_script&function_files06
Lecture 19 matlab_script&function_files06
Aman kazmi
 
aem : Fourier series of Even and Odd Function
aem : Fourier series of Even and Odd Function
Sukhvinder Singh
 
MATLAB Based Vehicle Number Plate Identification System using OCR
MATLAB Based Vehicle Number Plate Identification System using OCR
Ghanshyam Dusane
 
Licence plate recognition using matlab programming
Licence plate recognition using matlab programming
somchaturvedi
 
Product and service design
Product and service design
Grace Falcis
 
Matlab for diploma students(1)
Matlab for diploma students(1)
Retheesh Raj
 
Basics of programming in matlab
Basics of programming in matlab
AKANKSHA GUPTA
 
Matlab programming project
Matlab programming project
Assignmentpedia
 
Lecture 19 matlab_script&function_files06
Lecture 19 matlab_script&function_files06
Aman kazmi
 
aem : Fourier series of Even and Odd Function
aem : Fourier series of Even and Odd Function
Sukhvinder Singh
 
MATLAB Based Vehicle Number Plate Identification System using OCR
MATLAB Based Vehicle Number Plate Identification System using OCR
Ghanshyam Dusane
 
Licence plate recognition using matlab programming
Licence plate recognition using matlab programming
somchaturvedi
 
Product and service design
Product and service design
Grace Falcis
 
Ad

Similar to Lecture 02 visualization and programming (20)

Mit6 094 iap10_lec02
Mit6 094 iap10_lec02
Tribhuwan Pant
 
malab programming power point presentation
malab programming power point presentation
rohitkuarm5667
 
Lesson 3
Lesson 3
Vinnu Vinay
 
MATLAB PLOT.pdf
MATLAB PLOT.pdf
Kirankumar Nallamekala
 
Introduction to matlab lecture 4 of 4
Introduction to matlab lecture 4 of 4
Randa Elanwar
 
MatLab Basic Tutorial On Plotting
MatLab Basic Tutorial On Plotting
MOHDRAFIQ22
 
Matlab plotting
Matlab plotting
pramodkumar1804
 
Matlab_Harshal.pptx
Matlab_Harshal.pptx
HarshalGosavi8
 
Matlab Graphics Tutorial
Matlab Graphics Tutorial
Cheng-An Yang
 
1. Introduction.pptx
1. Introduction.pptx
SungaleliYuen
 
MatlabIntro (1).ppt
MatlabIntro (1).ppt
AkashSingh728626
 
Tutorialmatlab kurniawan.s
Tutorialmatlab kurniawan.s
Kurniawan susanto
 
Tutorial matlab
Tutorial matlab
Kavin Patel
 
Lines and planes in space
Lines and planes in space
Faizan Shabbir
 
An Introduction to MATLAB with Worked Examples
An Introduction to MATLAB with Worked Examples
eAssessment in Practice Symposium
 
Mat lab
Mat lab
Gizachew Kefelew
 
MATLABgraphPlotting.pptx
MATLABgraphPlotting.pptx
PrabhakarSingh646829
 
M2M_250327_22434hjjik7_250411_183538.pdf
M2M_250327_22434hjjik7_250411_183538.pdf
HebaEng
 
Matlab commands
Matlab commands
avinashkumer
 
Matlab commands
Matlab commands
Thim Mengly(ម៉េងលី,孟李)
 
Ad

More from Smee Kaem Chann (20)

stress-and-strain
stress-and-strain
Smee Kaem Chann
 
Robot khmer engineer
Robot khmer engineer
Smee Kaem Chann
 
15 poteau-2
15 poteau-2
Smee Kaem Chann
 
14 poteau-1
14 poteau-1
Smee Kaem Chann
 
12 plancher-Eurocode 2
12 plancher-Eurocode 2
Smee Kaem Chann
 
Matlab_Prof Pouv Keangsé
Matlab_Prof Pouv Keangsé
Smee Kaem Chann
 
Vocabuary
Vocabuary
Smee Kaem Chann
 
Journal de bord
Journal de bord
Smee Kaem Chann
 
8.4 roof leader
8.4 roof leader
Smee Kaem Chann
 
Rapport de stage
Rapport de stage
Smee Kaem Chann
 
Travaux Pratique Matlab + Corrige_Smee Kaem Chann
Travaux Pratique Matlab + Corrige_Smee Kaem Chann
Smee Kaem Chann
 
Td triphasé
Td triphasé
Smee Kaem Chann
 
Tp2 Matlab
Tp2 Matlab
Smee Kaem Chann
 
Cover matlab
Cover matlab
Smee Kaem Chann
 
New Interchange 3ed edition Vocabulary unit 8
New Interchange 3ed edition Vocabulary unit 8
Smee Kaem Chann
 
Matlab Travaux Pratique
Matlab Travaux Pratique
Smee Kaem Chann
 
The technologies of building resists the wind load and earthquake
The technologies of building resists the wind load and earthquake
Smee Kaem Chann
 
Devoir d'électricite des bêtiment
Devoir d'électricite des bêtiment
Smee Kaem Chann
 
Rapport topographie 2016-2017
Rapport topographie 2016-2017
Smee Kaem Chann
 
Case study: Probability and Statistic
Case study: Probability and Statistic
Smee Kaem Chann
 
Matlab_Prof Pouv Keangsé
Matlab_Prof Pouv Keangsé
Smee Kaem Chann
 
Travaux Pratique Matlab + Corrige_Smee Kaem Chann
Travaux Pratique Matlab + Corrige_Smee Kaem Chann
Smee Kaem Chann
 
New Interchange 3ed edition Vocabulary unit 8
New Interchange 3ed edition Vocabulary unit 8
Smee Kaem Chann
 
Matlab Travaux Pratique
Matlab Travaux Pratique
Smee Kaem Chann
 
The technologies of building resists the wind load and earthquake
The technologies of building resists the wind load and earthquake
Smee Kaem Chann
 
Devoir d'électricite des bêtiment
Devoir d'électricite des bêtiment
Smee Kaem Chann
 
Rapport topographie 2016-2017
Rapport topographie 2016-2017
Smee Kaem Chann
 
Case study: Probability and Statistic
Case study: Probability and Statistic
Smee Kaem Chann
 

Recently uploaded (20)

OpenPOWER Foundation & Open-Source Core Innovations
OpenPOWER Foundation & Open-Source Core Innovations
IBM
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
 
Mastering AI Workflows with FME by Mark Döring
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
OpenPOWER Foundation & Open-Source Core Innovations
OpenPOWER Foundation & Open-Source Core Innovations
IBM
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Cracking the Code - Unveiling Synergies Between Open Source Security and AI.pdf
Priyanka Aash
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
 
Mastering AI Workflows with FME by Mark Döring
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
“MPU+: A Transformative Solution for Next-Gen AI at the Edge,” a Presentation...
Edge AI and Vision Alliance
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 

Lecture 02 visualization and programming

  • 1. 6.094 Introduction to programming in MATLAB Danilo Šćepanović IAP 2010 Lecture 2: Visualization and Programming
  • 2. Outline (1) Functions (2) Flow Control (3) Line Plots (4) Image/Surface Plots (5) Vectorization
  • 3. User-defined Functions • Functions look exactly like scripts, but for ONE difference Functions must have a function declaration Help file Function declaration InputsOutputs Courtesy of The MathWorks, Inc. Used with permission.
  • 4. User-defined Functions • Some comments about the function declaration • No need for return: MATLAB 'returns' the variables whose names match those in the function declaration • Variable scope: Any variables created within the function but not returned disappear after the function stops running function [x, y, z] = funName(in1, in2) Must have the reserved word: function Function name should match MATLAB file name If more than one output, must be in brackets Inputs must be specified
  • 5. Functions: overloading • We're familiar with » zeros » size » length » sum • Look at the help file for size by typing » help size • The help file describes several ways to invoke the function D = SIZE(X) [M,N] = SIZE(X) [M1,M2,M3,...,MN] = SIZE(X) M = SIZE(X,DIM)
  • 6. Functions: overloading • MATLAB functions are generally overloaded Can take a variable number of inputs Can return a variable number of outputs • What would the following commands return: » a=zeros(2,4,8); %n-dimensional matrices are OK » D=size(a) » [m,n]=size(a) » [x,y,z]=size(a) » m2=size(a,2) • You can overload your own functions by having variable input and output arguments (see varargin, nargin, varargout, nargout)
  • 7. Functions: Excercise • Write a function with the following declaration: function plotSin(f1) • In the function, plot a sin wave with frequency f1, on the range [0,2π]: • To get good sampling, use 16 points per period. ( )1sin f x 0 1 2 3 4 5 6 7 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
  • 8. Outline (1) Functions (2) Flow Control (3) Line Plots (4) Image/Surface Plots (5) Vectorization
  • 9. Relational Operators • MATLAB uses mostly standard relational operators equal == not equal ~= greater than > less than < greater or equal >= less or equal <= • Logical operators elementwise short-circuit (scalars) And & && Or | || Not ~ Xor xor All true all Any true any • Boolean values: zero is false, nonzero is true • See help . for a detailed list of operators
  • 10. if/else/elseif • Basic flow-control, common to all languages • MATLAB syntax is somewhat unique IF if cond commands end ELSE if cond commands1 else commands2 end ELSEIF if cond1 commands1 elseif cond2 commands2 else commands3 end • No need for parentheses: command blocks are between reserved words Conditional statement: evaluates to true or false
  • 11. for • for loops: use for a known number of iterations • MATLAB syntax: for n=1:100 commands end • The loop variable Is defined as a vector Is a scalar within the command block Does not have to have consecutive values (but it's usually cleaner if they're consecutive) • The command block Anything between the for line and the end Loop variable Command block
  • 12. while • The while is like a more general for loop: Don't need to know number of iterations • The command block will execute while the conditional expression is true • Beware of infinite loops! WHILE while cond commands end
  • 13. Exercise: Conditionals • Modify your plotSin(f1) function to take two inputs: plotSin(f1,f2) • If the number of input arguments is 1, execute the plot command you wrote before. Otherwise, display the line 'Two inputs were given' • Hint: the number of input arguments are in the built-in variable nargin
  • 14. Outline (1) Functions (2) Flow Control (3) Line Plots (4) Image/Surface Plots (5) Vectorization
  • 15. Plot Options • Can change the line color, marker style, and line style by adding a string argument » plot(x,y,’k.-’); • Can plot without connecting the dots by omitting line style argument » plot(x,y,’.’) • Look at help plot for a full list of colors, markers, and linestyles color marker line-style
  • 16. Playing with the Plot to select lines and delete or change properties to zoom in/out to slide the plot around to see all plot tools at once Courtesy of The MathWorks, Inc. Used with permission.
  • 17. Line and Marker Options • Everything on a line can be customized » plot(x,y,'--s','LineWidth',2,... 'Color', [1 0 0], ... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',10) • See doc line_props for a full list of properties that can be specified -4 -3 -2 -1 0 1 2 3 4 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 You can set colors by using a vector of [R G B] values or a predefined color character like 'g', 'k', etc.
  • 18. Cartesian Plots • We have already seen the plot function » x=-pi:pi/100:pi; » y=cos(4*x).*sin(10*x).*exp(-abs(x)); » plot(x,y,'k-'); • The same syntax applies for semilog and loglog plots » semilogx(x,y,'k'); » semilogy(y,'r.-'); » loglog(x,y); • For example: » x=0:100; » semilogy(x,exp(x),'k.-'); 0 10 20 30 40 50 60 70 80 90 100 10 0 10 10 10 20 10 30 10 40 10 50
  • 19. -1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1 -10 -5 0 5 10 3D Line Plots • We can plot in 3 dimensions just as easily as in 2 » time=0:0.001:4*pi; » x=sin(time); » y=cos(time); » z=time; » plot3(x,y,z,'k','LineWidth',2); » zlabel('Time'); • Use tools on figure to rotate it • Can set limits on all 3 axes » xlim, ylim, zlim
  • 20. Axis Modes • Built-in axis modes » axis square makes the current axis look like a box » axis tight fits axes to data » axis equal makes x and y scales the same » axis xy puts the origin in the bottom left corner (default for plots) » axis ij puts the origin in the top left corner (default for matrices/images)
  • 21. Multiple Plots in one Figure • To have multiple axes in one figure » subplot(2,3,1) makes a figure with 2 rows and three columns of axes, and activates the first axis for plotting each axis can have labels, a legend, and a title » subplot(2,3,4:6) activating a range of axes fuses them into one • To close existing figures » close([1 3]) closes figures 1 and 3 » close all closes all figures (useful in scripts/functions)
  • 22. Copy/Paste Figures • Figures can be pasted into other apps (word, ppt, etc) • Edit copy options figure copy template Change font sizes, line properties; presets for word and ppt • Edit copy figure to copy figure • Paste into document of interest Courtesy of The MathWorks, Inc. Used with permission.
  • 23. Saving Figures • Figures can be saved in many formats. The common ones are: .fig preserves all information .bmp uncompressed image .eps high-quality scaleable format .pdf compressed image Courtesy of The MathWorks, Inc. Used with permission.
  • 24. Advanced Plotting: Exercise • Modify the plot command in your plotSin function to use squares as markers and a dashed red line of thickness 2 as the line. Set the marker face color to be black (properties are LineWidth, MarkerFaceColor) • If there are 2 inputs, open a new figure with 2 axes, one on top of the other (not side by side), and activate the top one (subplot) 0 1 2 3 4 5 6 7 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.2 0.4 0.6 0.8 1 plotSin(6) plotSin(1,2)
  • 25. Outline (1) Functions (2) Flow Control (3) Line Plots (4) Image/Surface Plots (5) Vectorization
  • 26. Visualizing matrices • Any matrix can be visualized as an image » mat=reshape(1:10000,100,100); » imagesc(mat); » colorbar • imagesc automatically scales the values to span the entire colormap • Can set limits for the color axis (analogous to xlim, ylim) » caxis([3000 7000])
  • 27. Colormaps • You can change the colormap: » imagesc(mat) default map is jet » colormap(gray) » colormap(cool) » colormap(hot(256)) • See help hot for a list • Can define custom colormap » map=zeros(256,3); » map(:,2)=(0:255)/255; » colormap(map);
  • 28. Surface Plots • It is more common to visualize surfaces in 3D • Example: • surf puts vertices at specified points in space x,y,z, and connects all the vertices to make a surface • The vertices can be denoted by matrices X,Y,Z • How can we make these matrices loop (DUMB) built-in function: meshgrid ( ) ( ) ( ) [ ] [ ] f x,y sin x cos y x , ; y ,π π π π = ∈ − ∈ − 2 4 6 8 10 12 14 16 18 20 2 4 6 8 10 12 14 16 18 20 -3 -2 -1 0 1 2 3 2 4 6 8 10 12 14 16 18 20 2 4 6 8 10 12 14 16 18 20 -3 -2 -1 0 1 2 3
  • 29. surf • Make the x and y vectors » x=-pi:0.1:pi; » y=-pi:0.1:pi; • Use meshgrid to make matrices (this is the same as loop) » [X,Y]=meshgrid(x,y); • To get function values, evaluate the matrices » Z =sin(X).*cos(Y); • Plot the surface » surf(X,Y,Z) » surf(x,y,Z);
  • 30. surf Options • See help surf for more options • There are three types of surface shading » shading faceted » shading flat » shading interp • You can change colormaps » colormap(gray)
  • 31. contour • You can make surfaces two-dimensional by using contour » contour(X,Y,Z,'LineWidth',2) takes same arguments as surf color indicates height can modify linestyle properties can set colormap » hold on » mesh(X,Y,Z)
  • 32. Exercise: 3-D Plots • Modify plotSin to do the following: • If two inputs are given, evaluate the following function: • y should be just like x, but using f2. (use meshgrid to get the X and Y matrices) • In the top axis of your subplot, display an image of the Z matrix. Display the colorbar and use a hot colormap. Set the axis to xy (imagesc, colormap, colorbar, axis) • In the bottom axis of the subplot, plot the 3-D surface of Z (surf) ( ) ( )1 2sin sinZ f x f y= +
  • 33. Specialized Plotting Functions • MATLAB has a lot of specialized plotting functions • polar-to make polar plots » polar(0:0.01:2*pi,cos((0:0.01:2*pi)*2)) • bar-to make bar graphs » bar(1:10,rand(1,10)); • quiver-to add velocity vectors to a plot » [X,Y]=meshgrid(1:10,1:10); » quiver(X,Y,rand(10),rand(10)); • stairs-plot piecewise constant functions » stairs(1:10,rand(1,10)); • fill-draws and fills a polygon with specified vertices » fill([0 1 0.5],[0 0 1],'r'); • see help on these functions for syntax • doc specgraph – for a complete list
  • 34. Outline (1) Functions (2) Flow Control (3) Line Plots (4) Image/Surface Plots (5) Vectorization
  • 35. Revisiting find • find is a very important function Returns indices of nonzero values Can simplify code and help avoid loops • Basic syntax: index=find(cond) » x=rand(1,100); » inds = find(x>0.4 & x<0.6); • inds will contain the indices at which x has values between 0.4 and 0.6. This is what happens: x>0.4 returns a vector with 1 where true and 0 where false x<0.6 returns a similar vector The & combines the two vectors using an and The find returns the indices of the 1's
  • 36. Example: Avoiding Loops • Given x= sin(linspace(0,10*pi,100)), how many of the entries are positive? Using a loop and if/else count=0; for n=1:length(x) if x(n)>0 count=count+1; end end Being more clever count=length(find(x>0)); length(x) Loop time Find time 100 0.01 0 10,000 0.1 0 100,000 0.22 0 1,000,000 1.5 0.04 • Avoid loops! • Built-in functions will make it faster to write and execute
  • 37. Efficient Code • Avoid loops This is referred to as vectorization • Vectorized code is more efficient for MATLAB • Use indexing and matrix operations to avoid loops • For example, to sum up every two consecutive terms: » a=rand(1,100); » b=zeros(1,100); » for n=1:100 » if n==1 » b(n)=a(n); » else » b(n)=a(n-1)+a(n); » end » end Slow and complicated » a=rand(1,100); » b=[0 a(1:end-1)]+a; Efficient and clean. Can also do this using conv
  • 38. End of Lecture 2 (1) Functions (2) Flow Control (3) Line Plots (4) Image/Surface Plots (5) Vectorization Vectorization makes coding fun!
  • 39. MIT OpenCourseWare http://ocw.mit.edu 6.094 Introduction to MATLAB® January (IAP) 2010 For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms.