Lecture 26: Reusable Methods: Enviable Sloth Creating Function M-files User defined functions are stored as Mfiles To use them, they must be in.

Download Report

Transcript Lecture 26: Reusable Methods: Enviable Sloth Creating Function M-files User defined functions are stored as Mfiles To use them, they must be in.

Lecture 26: Reusable
Methods: Enviable Sloth
Creating Function M-files
User defined functions are stored as Mfiles
To use them, they must be in the current
directory
User-defined functions must start
with a function definition line
The line contains…




The word function
A variable that defines the function output
A function name
A variable used for the input argument
function output = poly(x)
xz
A simple function
In the new version, the file name could be different from the
function name.
The function is available from
the command window or from
other M-file programs
Comments
You should comment functions liberally,
just as you would any computer code
The comment lines immediately after
the first line are returned when you
query the help function
Functions with Multiple Inputs
A user defined function with
multiple inputs
Functions with Multiple Outputs
This function return 3
output values
If you don’t ask for
all three results, the
program just
returns the first
value
Local Variables
Variables defined in an M-file function, only
have meaning inside that program
if set x=1 in the command window, it is not
equal to 1 in the function
If set y=2 in a function, it is not equal to 2 in
the workspace window
The only way to communicate between
functions and the workspace, is through the
function input and output arguments
User Defined Input
To this point we have “hard coded” the
values of variables into our M-file
programs
The input function allows us to prompt
the user to enter a value
The input function is used in an M-file
program to prompt the user to enter a
value
The prompt is displayed
in the command window
Input accepts a variety of data
Scalars
Matrices

enter inside square brackets
Character strings


enter inside single quotes
Or… specify string input with ‘s’
Run this program twice – once
with numeric input and once
with character input
Indicates that the input should be
interpreted as a string
Output Options
Enter the name of a variable
Use the disp function
Use the fprintf function
disp
The display
(disp) function
can be used to
display the
contents of a
matrix without
printing the
matrix name
The disp function can also be used to
display a string
You can combine disp functions to create
meaningful output from an M-file program,
but the result of each disp function is on a
separate line.
Since the disp function only takes one
input, you must combine arrays to make
more complicated output
Use the num2str(x) function to change
numeric information to a string
disp(['The values in the x array are: ' num2str(x)])
Structures
Sequence
Selection
Repetition
Sequence
Selection
Repetition (Loop)
Selection and Repetition structures require
comparisons to work
Relational operators make those
comparisons
Logical operators allow us to combine
the comparisons
Relational Operators
<
<=
>
>=
==
~=
Less than
Less than or equal to
Greater than
Greater than or equal to
Equal to
Not equal to
Logical Operators
&
~
|
xor
and
not
or
exclusive or
Selection Structures
find
A family of if structures
find
The find command searches a matrix
and identifies which elements in that
matrix meet a given criteria.
For example…
The US Naval Academy requires
applicants to be at least 66” tall
Consider this list of applicant heights
63”, 67”, 65”, 72”, 69”, 78”, 75”
Which applicants meet the criteria?
The find function returns the index number for
elements that meet a criteria
index numbers
element values
find used with a 2D matrix
x =[1 2 3; 10 5 1; 12 3 2; 8 3 1]
Returns a single element
element = find(x > 9)
number
the row and column
[row, column] = find(x > 9) Returns
designation of an element
Simple if
if comparison
statements
end
For example….
if G<50
count = count +1;
disp(G);
end
If statements
Easy to interpret for scalars
What does an if statement mean if the
comparison includes a matrix?

The comparison is only true if it is true for
every member of the array
G=[30,55,10]
if G<50
count = count +1;
disp(G);
end
The code inside the if
statement is not executed,
because the comparison is
not true!!
The if/else structure
The simple if triggers the execution of a
block of code if a condition is true
If it is false that block of code is
skipped, and the program continues
without doing anything
What if instead you want to execute an
alternate set of code if the condition is
false?
Use an if structure to calculate a
natural log
Check to see if the input is positive


If it is, calculate the natural log
If it isn’t, send an error message to the
screen
The if/else/elseif structure
Use the elseif for multiple selection criteria
For example
 Write a program to determine if an applicant
is eligible to drive
Repetition Structures - Loops
Loops are used when you need to repeat
a set of instructions multiple times
MATLAB supports two types of loops


for
while
When to use loops
In general loops are best used with
scalars
Many of the problems you may want to
attempt with loops can be better solved
by vectorizing your code or with
MATLAB’s logical functions such as

find
For Loops
for index = [matrix]
commands to be executed
end
•The loop starts with a for statement, and ends with the
word end.
•The first line in the loop defines the number of times the
loops will repeat, using an index number. The loop is
executed once for each element of the index matrix
identified in the first line
•The index of a for loop must be a variable.
Here’s a simple example
thethis
In
index
case
can
k is
bethe
index – the
defined
using
loop
anyis
repeated
of
the techniques
once for
each value
we’ve
learned
of k
Here’s a simple example
thethis
In
index
case
can
k is
bethe
index – the
defined
using
loop
anyis
repeated
of
the techniques
once for
each value
we’ve
learned
of k
While Loops
while criterion
commands to be executed
end
While loops are very similar to for loops.
The big difference is the way MATLAB decides
how many times to repeat the loop.
While loops continue until some criterion is
met.
This loop creates the
matrix a, one element
at a time
Improving the Efficiency of Loops
In general, using a for loop (or a while
loop) is less efficient in MATLAB than
using array operations.
These two
Here’s
an example.
lines of code
This
code acreates
start
timer toa measure
40,000
element
the
elapsed
matrix
time
ofrequired
ones,
then
to
runmultiplies
the lines each
of MATLAB
element
code
between
in the them
matrix by pi
The amount of time it takes to
run this code will depend on
your computer
This code accomplishes the same
thing with a for loop