```Lecture 13: M/O/F/ for
Engineering Applications Part 1
BJ Furman
26NOV2012
The Plan for Today

Matlab/Octave/FreeMat (M/O/F) for
engineering applications






Overview of M/O/F
Matlab/FreeMat environment
Octave command line
Basic operations
Script files
Learning Objectives

Explain what M/O/F are

Navigate the Matlab user interface and
Octave command line

Use M/O/F as a scratch pad

Create script files to execute a sequence
of commands
Matlab and Octave

M/O/F are ‘high-level’ languages


They abstract away the nitty-gritty details
Numerical calculation

Oriented toward engineering, mathematical, and
scientific computing

Matlab (Matrix Laboratory)




Key point!
Powerful graphics and analysis tools


Particularly good at handling arrays!
Controls, signal processing, data analysis, and other
specialized ‘toolboxes’ are available
Widely used in industry
Matlab is commercial software (a student version
is available) http://www.mathworks.com/
Octave and FreeMat are open source and free:
http://www.gnu.org/software/octave/ (main page)
http://freemat.sourceforge.net/index.html (main page)
Matlab (ver. 6.5) Environment (GUI)
Default Window Layout
Workspace/Current
Directory Window
Workspace: lists variables
Directory: files in current dir
Command
Window
Command History
Window
Octave Command Line
Enter commands at the prompt
QtOctave GUI
Enter commands at the prompt
Info on variables in
the workspace
Variables are
dynamically
typed
dynamically
typed
M/O/F Basics - 1

Fundamental element: the array

even scalars are stored as 1x1 array of double floating
point value

How many bytes?


See Workspace Window
Useful commands (see documentation for more details!)





who (information about what is in memory)
whos (more detailed information about what is in memory)
clc (clears the command window. In QtOctave, View  Clear Terminal)
clear (clears all user defined variables)
help name (provides information on command name)
M/O/F Basics - 2

Script files (.m files)

Text files containing M/O/F statements


Type in a text editor (M/O/F) or use
M-file editor in Matlab (File/New/M-File or Ctrl-n)
Matlab: %
 Octave: % or #
 FreeMat: %


Example: look at cool_plot.m

Verify directory containing cool_plot.m is in the file path


MATLAB: File | Set Path… | select folder
Octave: addpath(‘dir_path’) find from Windows Explorer
Script File Example: cool_plot.m
Plot of z ( x , y )  e
2
2
 0 .5 [ x  0 .5 ( x  y ) ]
over  4  x , y  4
Octave Script File Example
cool_plot.m needs to be in the
Example (yours may be different):
• Matlab: File | Set Path…
Plot of z ( x , y )  e
2
2
 0 .5 [ x  0 .5 ( x  y ) ]
over  4  x , y  4
Matlab Script File Example
Ch Example
function exp(-0.5(x*x+0.5(x-y)(x-y)))
z
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
4
3
2
1
0
y
-1
-1
-2
-3
-4
See: chap. 23 of The Ch Language User's Guide
and chap. 2 of The Ch Language Environment Reference
-4
-3
0
1
2
3
4
x
-2
This plot is generated by Ch Student Edition
Excel Example
Data needs to be equally spaced
• Select z-data values
• Insert | Other Charts | Surface
• Use Chart Tools | Layout tab to
control display
M/O/F Basics - 3

Array creation

A = [1 2 3; 4,5,6; 7 8 9]


What does this do?
Indexing elements


size(A)
A(1,2)
Separate elements by spaces or
commas, and rows by semicolon
or carriage return
Index by enclosing indices in ( )
Which element does this choose? Contrast with C.


A(4,2) = 13
A(4,2) = 13;
What does this do? Contrast with C.
The semicolon at the end suppresses
the output
M/O/F Basics - 4

Vectors (just 1xn or nx1 arrays)


Vectors using the colon operator



C = 1 : 0.25 : 2
D=0:5
Note: limit is reached only
if (limit-base)/increment is
an integer
1
0.25
2
Format: base : increment : limit
For an increment of 1: base : limit
Linspace


B=[sin(pi/4), -2^3, size(A,1)]
E=
Format: start : end : n For n elements
linearly spaced between start and
linspace(0,5,3)
end
Logspace

F=
Format: start : end : n For n elements
logarithmically spaced between
logspace(1,3,5)
start and end
M/O/F Basics - 5

Manipulating arrays



A = [ A ; [ 10 11 12 ] ]
Extract a sub-array


What does this do?
G = A(1:3, 1:2)
Colon operator by itself means, “all the elements”



Assuming A = [ 1 2 3; 4,5,6 ; 7 8 9 ]
Can apply to the dimensions of the arrays to access all the elements of
a row or column
Can apply to the entire array to get all the elements as a column vector
 What order will they come out?
Examples



H = [1:4; linspace(10,40,4); 400:-100:100]
I = H( [1 2], : )
What will this produce?
J = H( : )
Matlab stores array
elements in columnmajor order.
M/O/F Basics - 6

Special matrices

zeros, ones, eye



K=zeros(3)
L=ones(4)
M=eye(3)
M/O/F Basics - 7

Matrix operations

Arithmetic just like with scalars! (But need to
take care that dimensions agree)

N=L*7

O=N+eye(4)

P=B*E

P=B*E’

Q=A+B

Q=B+E

[1 2]*[3 ; 4]
What does the ‘ do?
A=[1 2 3; 4,5,6; 7 8 9]
B=[sin(pi/4), -2^3, size(A,1)]
E=linspace(0,5,3)
L=ones(4)
M/O/F Basics - 8
i2
i1

R2
Matrix operations, cont.





i3
Recall the circuit analysis problem
R1=10k
R2=R3=5k
V=10V
Matrix solution
Ri  V  R
1
1
1
Ri  R V  i  R V
use ' left' division to solve for i
i R \V
( i = R / V ) roughly the same as: i = VR-1
1

0

 0
1
0
R2  R3 
R
R3
+V
Matrix division
R1

 1  i1   0 
   
R1 i 2  V
   
0   i3  V 
i V
R = [1 -1 -1; 0 0 10e3; 0 10e3 0];
V = [0 10 10]’;
I=R\V
M/O/F Basics - 9

Matrix operations, cont.

Element-by-element operations use
 . (dot) and the operator (other
v1
 
 


dot product of two vectors

v2
v 1  v 2  v 1 v 2 cos(  )


ˆ
ˆ
ˆ
v1  3i  2 j  5 k
v 2  2 iˆ  4 ˆj  10 kˆ
 
what is v 1  v 2 ?
 
v 1  v 2  ( 3 )( 2 )  ( 2 )(  4 )  (  5 )( 10 )  6  8  50   52
in M/O/F :
v1  [ 3
2
 5]
sum ( v1 . * v 2 )
v 2  [2
4
10 ]
Note!! period-asterisk means
element-by-element multiplication
M/O/F Basics - 10

Functions

Like script M-files, but several differences:

first line must be of the form:
Name that you assign
function [output args] = function_name(input args)
keyword




variables generated in the function are local to the function,
whereas for script files (.m files), variables are global
the file must be named, ‘function_name.m’
describe what the function does
Example: root-mean-square function, N 2
xi

rms1.m
i 1
Given, x  [ x1 , x 2 ,..., x N ]
RMS 
N
M/O/F Basics - 10.1

Functions, cont.

Example: root-mean-square
function, cont.

Pseudocode:





xs = x .^2
Sum the squares



Given, x  [ x1 , x 2 ,..., x N ]

sums = sum(xs)
Divide by N


N = length(x)
ms = sums/N

RMS 
Take the square root

Expression to square each
element in vector x


square each element of x
sum the squares
divide by N
take the square root
N
rms = sqrt(ms)
Before you write the
function, make sure the
name you propose is
 help fn_name
i 1
N
2
xi
M/O/F Basics - 10.2

Functions, cont.

Example: root-mean-square
function, cont.
H1 comment line
(used in lookfor)
will be displayed
by help command
function [y] = rms(v)
% rms(v) root mean square of the elements of the column vector v
% Function rms(v) returns the root mean square of the elements
% of the column vector, v. If v is a matrix, then rms(v) returns
% a row vector such that each element is the root mean square
%of the elements in the corresponding column of v.
vs = v.^2; % what does this line do? Also note semicolon.
s = size(v); % what does this line do?
y = sqrt(sum(vs,1)/s(1)); % what is s(1)?
Let v=sin([0: 0.0001*pi: 2*pi]’), one period of a sine wave. The RMS value
of a sine wave is its amplitude*1/sqrt(2)
Does rms() work with a row vector? How about a matrix?
M/O/F Basics - 10.3

Functions, cont.

Make rms function more
robust


to work with row or column
vector or matrix with column
vectors of data
Pseudocode:

Test for size of v



if > 2, print error message
else
 if row vector

transpose
 calculate rms
See rms3.m
Vector Dot Product Example
Find the X and Y components of the vector, V





that is, find v x and v y , so that v x  v y  v

v

v
Y
ˆj


iˆ

vy

vx
X


vx  v iˆ 



v x iˆ cos(  )  v x (1) cos(  )  v x cos(  )





v y  v  ˆj  v y ˆj cos( 90   )  v y (1) cos( 90   )  v y sin(  )
Back
Review
References

Matlab. (2009, November 6). In Wikipedia, the free encyclopedia.
Retrieved November 6, 2009, from
http://en.wikipedia.org/wiki/Matlab

Matlab tutorials:

GNU Octave. (2009, October 31). In Wikipedia, the free
encyclopedia. Retrieved November 6, 2009, from
http://en.wikipedia.org/wiki/GNU_Octave

Octave main page: http://www.gnu.org/software/octave/

Octave tutorials: http://homepages.nyu.edu/~kpl2/dsts6/octaveTutorial.html,
http://smilodon.berkeley.edu/octavetut.pdf


FreeMat. http://freemat.sourceforge.net/index.html
ftp://www.chabotcollege.edu/faculty/bmayer/ChabotEngineeringCour
ses/ENGR-25.htm
```