ES 314
Advanced programming, simulation
and modeling
M W 9 to 10 : 50 AM
2008, Salazar Hall
Catalog Description of the course:
Lecture: 4 hours; laboratory: 0 hours. Pointers and dynamic
allocation of storage; linked lists; an introduction to the object
oriented programming (OOP) paradigm; classes and objects;
encapsulation; member variables and member functions.
Static arrays, dynamic arrays, stacks and queues, linked lists,
hashing. System modeling techniques and applications such as
generation of noise (random numbers) and correlated signal
with different pdfs, measurement of statistical parameters like
moments, queuing systems and system simulation.
Prerequisite: CS 115: Programming I. Co-requisites: MATH 345:
Probability Theory and ES 220: Electric Circuits, or consent of
Goals of the course: To introduce software design for
engineering applications through MATLAB programming,
computational modeling of physical systems and software
simulation of simple physical systems.
Specifically, the following topics will be covered:
•MATLAB programming – iteration, library and user-defined
functions, scripts, structured data and objects, image and audio
files, plotting and visualization, recursion, project design and
•performing statistical analyses of data (e.g. parameter
•fundamental algorithms for sorting, searching, solving system
of equations etc.
•computational modeling
•simulation of physical systems and models: network and
queuing models
Text book
Kaplan, Daniel T. Introduction to Scientific Computation and
Programming, Brooks/Cole-Thomson Learning, 2004.
We will cover most of Chapters 1 to
For simulation and modeling, we will
use other sources.
Course History
• current offering is the second.
• previous offering – Fall 2008
• co-taught by Dr. Jagan Agrawal, Dr. Ali kujoory
and myself
• used c++ for programming, no specific language
was required by Dr. Agrawal, Dr. Kujoory used
short quizzes: ~10 points The quizzes will be in-class for a duration to
10 to 15 minutes, one for each class.
programming assignments and projects: ~40 points Most of the
assignments will involve problem solving and implementing the
solution using MATLAB. There may be a final project chosen by each
student individually.
mid-semester tests (2): ~25 points, in-class.
final examination: ~25 points This exam will be in-class and
comprehensive. It will take place at the time scheduled by registrar’s
office. You can find out from the web page:
course overview
•Matlab programming
• simulation and modeling
• case studies
• database, graphics and plotting, audio, image
processing, modeling of bio-signals etc.
• probabilistic models of network traffic, queuing
models etc.
Matlab programming language
• most widely used by engineers
• other similar ones: mathematica, maple,
mathcad, macsyma
• vector and matrix centered. (Name comes from
MATrix LABoratory).
• extensive support for mathematical operations,
plotting, visual presentation of results
• toolboxes for areas such as signal processing,
image processing, wavelets, bioinformatics
Matlab programming language
Why it is useful engineering applications:
• large toolbox of numeric/image library functions
• very useful for displaying, visualizing data
• high-level: focus on algorithm structure, not on low
level details
• allows quick prototype development of algorithms
User interface
• interactive mode
• result appears immediately after the command is
• interpreted language
• scripts for sequence of operations, programs
• save scripts as files with .m extension
Main features of Matlab
•simple data types:
• numbers, string, boolean
•structured types:
• vector, matrix, indexing, mixed data types
(structures and objects)
• files and scripts
Main features of Matlab
• functions:
• user defined functions
• more advanced features: recursion, function as parameter,
function as return value etc.
• conditionals:
• if statement, if … then .. else, switch statement
• loops:
• for loop, nested loops, loop termination, conditional loop
Main features of Matlab
• scope:
• environment and scope
• resolving name conflicts
• events:
• reactive program
• user interface design
• has links to tutorials,
video clips on various topics
• other tutorials
and many others.
Stochastic models – example
What is the probability that a web page is visited?
Model: each web page is represented by a node and
each link from page A to page B is an edge in the
graph. Assume a visitor to a page will randomly click
on one of the links on the page.
Also assume that one starts with probability 1/n at any
page (where n = total number of pages).
This model is called a Markov chain.
Markov chain – simulation
Shown below is a simple Markov chain. What is the average
number of steps it takes to move from state 1 to state 3?
Assume all outgoing
arcs have the same
Application: assuming that the server has probability =
0.55 of winning a game, what is the average length of a
game in tennis?
signal generation and display – simple example
signal generation and display – simple example
Image models
2-d image of a photograph:
Digital image is represented by a
collection of pixels. Each pixel has a
color value represented by 32 bits. (R, G,
B, A) values.
Digital images can be processed in
various ways:
• compression
• restoration, de-blurring
• enhancement, noise reduction
Image processing
original image
restored image
Image merging
Image merging – a more complex example
Input images
Example taken from
Volume Data Representation and Visualization
Typical scalar volume data is composed of a 3-D array of data and three
coordinate arrays of the same dimensions. The coordinate arrays specify
the x-, y-, and z-coordinates for each data point.
For example, flow data might have coordinate units of inches and data units
of psi.
A number of MATLAB functions are useful for visualizing scalar data:
• Slice planes provide a way to explore the distribution of data values
within the volume by mapping values to colors.
• You can orient slice planes at arbitrary angles, as well as use nonplanar
slices. You can specify the data used to color isosurfaces, enabling you to
display different information in color and surface shape
• Contour slices are contour plots drawn at specific coordinates within the
volume. Contour plots enable you to see where in a given plane the data
values are equal.
MRI Data Visualization
• MRI data typically contains a number of slice planes taken
through a volume, such as the human body.
• MRI data formats that can be accessed directly through
•A series of 2-D images representing slices through the head
•2-D and 3-D contour slices taken at arbitrary locations within
the data
•An isosurface with isocaps showing a cross section of the
contour slices
Example taken from:
Matlab – working windows
Matlab – Introduction (Ch 2)
Variable definition
• need not be declared
• Variable names can contain up to 63 characters
• Variable names must start with a letter followed by
letters, digits, and underscores.
• Variable names are case sensitive.
• Key words can’t be used as variable names.
(Key words list is in the next slide.)
Matlab Special Variables
• ans Default variable name for results
• pi: Value of π
>> pi
ans =
• eps: smallest incremental number
• inf: Infinity
• NaN: Not a number e.g. 0/0
• realmin: The smallest usable positive real number
• realmax: The largest usable positive real number
Matlab – Introduction (Ch 2)
• key words:
• if, else, end, for, while, break, switch, case, try, catch,
return, global, function, persistent etc.
• arithmetic operations:
* (or .*) latter used for component-wise * in vector
/ (or ./)
\ (or .\)
^ (or .^) a^b stands for ab
Other MATLAB symbols
>> prompt
. . . continue statement on next line
, separate statements and data
% start comment which ends at end of line
; (1) suppress output
(2) used as a row separator in a matrix
: specify range
Matlab – Introduction (Ch 2)
• Exercise 2.1: Evaluate the expression
3 – 5 + 4/6 – 8 *4^2
• Exercise 2.2: Write (3 – (5 + 2* 8))/4 in functional
style using plus, minus, times and rdivide.
a + b is written as plus (a, b) in functional style.
some helpful commands
>> whos
Lists all the variables currently active in environment
>> lookfor <word> gives all sentences containing
<word> in the manual.
Use up arrow to repeat the previous command.
>> help
Chapter 3 – numbers, string, booleans
MATLAB stores numeric data as double-precision floating point
(double) by default. To store data as an integer, you need to
convert from double to the desired integer type.
Example: To store 325 as a 16-bit signed integer assigned to
variable x:
>> x = int16(325);
If the number being converted to an integer has a fractional
part, MATLAB rounds to the nearest integer.
• If the fractional part is exactly 0.5, then from the
two equally nearby integers, MATLAB chooses the
one for which the absolute value is larger in
>> x = 325.499;
>> int16(x)
ans = 325
>> x = x + .001;
>> int16(x)
ans = 326
Built-in functions that convert to int
• Other related functions: floor, ceil
long floating-point format
>> format long
>> x = 1.5^2.3;
>> x
x =
>> format short
>> x
x =
>> x = 2.564593653;
>> x
x =
Complex numbers
Character: alphabetical – upper/lower (‘a’ .. ‘z’, ‘A’ .. ‘Z’)
digits – 0, 1, …, 9
special characters - $, % etc.
control characters - \n (end of line) etc.
Each character is encoded by 8 bits (ASCII) or 16 bits (unicode)
Unicode allows encoding of alphabets from many languages
such as Hungarian, Chinese, Swahili etc.
String - sequence of characters.
>> greeting = ‘hello’
String operations
>> length(word)
ans = 5
>> strcmp(word, ‘hello!’)
ans = 1 if the Boolean expression is true, 0 else.
Strcmp compares two strings.