User Defined Functions
f
Domain Range
Lecture 3
x f f(x)
y
(x1,x2) f = x1+x2
11/10/2021 Intr Matlab for FM, Fall 2010 1
Creating Function M-files
• User defined functions are stored as M-files
– Same kind of naming as script m-files
– First line tells Matlab it is a function
11/10/2021 Intr Matlab for FM, Fall 2010 2
User-defined functions must have a function
declaration as their first executable statement
• The line contains…
– The word function
– A variable (or variables) that defines the function
output
– A function name
– A variable (or variables) used for the input
argument
function output = poly(x)
11/10/2021 Intr Matlab for FM, Fall 2010 3
Function name
The name of the m-file is the name of the
function
Style “rule” -->
use the file name as the name you
give the function in the ‘function’ line
(matlab demo)
11/10/2021 Intr Matlab for FM, Fall 2010 4
Workshop (part of a hw problem)
We will do this together
• Create a function to generate random
numbers (uniform on 0 to 1), keeping a sum of
them until they add up to a specified value.
• Output the number of numbers generated.
demo: countEm()
11/10/2021 Intr Matlab for FM, Fall 2010 5
A simple function
The function name must be the same as the file
name
11/10/2021 Intr Matlab for FM, Fall 2010 6
The function is available from
the command window or from
other M-file programs
11/10/2021 Intr Matlab for FM, Fall 2010 7
Style
While you are creating a function it may be useful to
allow intermediate calculations to print to the
command window. However, once you complete
your “debugging” make sure that all your output is
suppressed.
Show only what is needed to facilitate understanding to
the user of the function
11/10/2021 Intr Matlab for FM, Fall 2010 8
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
• You should describe the purpose of the
function and any input and output
11/10/2021 Intr Matlab for FM, Fall 2010 9
11/10/2021 Intr Matlab for FM, Fall 2010 10
Functions can accept…
• numeric values
• variables
• scalars
• arrays
11/10/2021 Intr Matlab for FM, Fall 2010 11
Functions with Multiple Inputs and Outputs
• Recall the remainder function
This function
has two
inputs
11/10/2021 Intr Matlab for FM, Fall 2010 12
A user defined function with
multiple inputs
11/10/2021 Intr Matlab for FM, Fall 2010 13
Functions with Multiple Outputs
• Recall the
max function
• It returns two
results
11/10/2021 Intr Matlab for FM, Fall 2010 14
This function return 3
output values
If you don’t ask for all
three results, the
program just returns
the first value
11/10/2021 Intr Matlab for FM, Fall 2010 15
Recall the size function
At first this
function looks
like it returns
two values – but
it really only
returns a single
array with two
elements
11/10/2021 Intr Matlab for FM, Fall 2010 16
Practice
• 6.1, p 189
Work a few, e.g. 1, 2, 3, and 4
Call the solution to 3 function sinP.
Look at HW 6 -- expP
• 6.2, p 196
Work a few
11/10/2021 Intr Matlab for FM, Fall 2010 17
Functions with no input or no output
• It isn’t always necessary to define an output
In math terms --
The range may be the empty set
11/10/2021 Intr Matlab for FM, Fall 2010 18
No output is defined
Just because a function does not return
an output value doesn’t mean it When you try to set
doesn’t do anything. This function the star function
draws a star equal to a variable,
an error statement is
returned
11/10/2021 Intr Matlab for FM, Fall 2010 19
Determining the number of input and output
arguments
• nargin
– discovers the number of input arguments
• nargout
– discovers the number of output arguments
11/10/2021 Intr Matlab for FM, Fall 2010 20
You can use these functions in your programming
to make your functions more versatile
• For example the surf function accepts a
variable number of arguments
• surf(z) plots the 2-D matrix z against the index
numbers
• surf(x,y,z) plots the 2-D matrix z against the x
and y coordinates
11/10/2021 Intr Matlab for FM, Fall 2010 21
When a variable number of arguments is
allowed…
• nargin returns -1
11/10/2021 Intr Matlab for FM, Fall 2010 22
Checks to see how
many output values
were requested
If star1 is not set equal to a
variable the star is drawn but
no output is returned
If star1 is set
equal to a
variable, the
rhyme is returned
11/10/2021 Intr Matlab for FM, Fall 2010 23
Workshop
• Create a function to generate random numbers (uniform
on 0 to 1), keeping a sum of them until they add up to a
specified value.
• If one value is requested,
– output the number of numbers generated.
• If two values are requested,
– output the number of numbers generated and the end total
Two possible syntax forms
[Nnums] = countEm(inVal)
[Nnums, total] = countEm(inVal)
11/10/2021 Intr Matlab for FM, Fall 2010 24
Local Variables (Workspace)
• Variables defined in an M-file function, only have
meaning inside that program
• if I set x=1 in the command window, it is not equal to
1 in the function
• If I set y=2 in a function, it is not equal to 2 in the
workspace window
• When a function is invoked, a new workspace is
created.
• When the function terminates, the function
workspace goes away.
11/10/2021 Intr Matlab for FM, Fall 2010 25
ans is the only
variable
created x, y, a, and output are local
variables to the g function
When the g function is executed, the only
variable created is determined in the
command window (or script M-file used to
execute a program)
11/10/2021 Intr Matlab for FM, Fall 2010 26
Even though g is
defined in the
workspace, the
If you don’t define g in this function, it won’t
function can’t
work!!
access it
11/10/2021 Intr Matlab for FM, Fall 2010 27
Global Variables
• Although it is possible to define global variables
• Changing the value of a global variable can
happen anywhere -- very hard to debug mistakes
***Avoid using global variables***
Demo: adding count to die.m and using countEm()
first, add just the one global variable, then make global in countEm
11/10/2021 Intr Matlab for FM, Fall 2010 28
Persistent Variables
Persistent variables retain their value when the
function-workspace disappears
Demo: make count in die.m persistent
11/10/2021 Intr Matlab for FM, Fall 2010 29
Toolbox of Functions
• Directory/folder nmc is called a toolbox.
• Usually functions in a toolbox are connected by a theme,
such as all the functions needed for solving ordinary
differential equations.
• When you call a function MATLAB searches for it along a
predetermined path
– First it looks in the current directory
– Then it follows a search path determined by your installation of
the program
– we have already used addpath.
11/10/2021 Intr Matlab for FM, Fall 2010 30
Define anonymous functions in a
script M-file
• Suppose you’d like to define a function for
natural log called ln
• ln=@(x)log(x)
– The @ symbol alerts MATLAB that ln is a function
– The function input is next, inside parentheses
– Finally the function is defined
11/10/2021 Intr Matlab for FM, Fall 2010 31
function definition
The name of the function is called a
function handle – in this case it is ln
Notice that function handles are
represented with the box symbol in the
workspace window
11/10/2021 Intr Matlab for FM, Fall 2010 32
Function Functions
• Some functions accept other functions as
input
• An examples include fplot(), nargin, and
nargout.
• More on function functions later….
11/10/2021 Intr Matlab for FM, Fall 2010 33
Summary
• MATLAB contains a wide variety of built in
functions
• It also allows you to define your own functions
11/10/2021 Intr Matlab for FM, Fall 2010 34
Summary – Function M-Files
• Function M-files must start with a definition line
containing
– the word function
– a variable that defines the function output (if there is any
output)
– a function name
– a variable used for the input argument (if there is input)
11/10/2021 Intr Matlab for FM, Fall 2010 35
Summary – Function M-files
• Function M-files must be stored in the current
directory or in a user defined toolbox
• The function name must also be the file name
11/10/2021 Intr Matlab for FM, Fall 2010 36
Summary - Comments
• Functions should contain ample comments to
document the code
• The comments directly after the function
definition are used by the help feature to
describe the function
11/10/2021 Intr Matlab for FM, Fall 2010 37
Summary – Anonymous Functions
• Anonymous functions are defined in a
MATLAB session or M-file
• They only exist during the current session
• They are useful as input to function functions
11/10/2021 Intr Matlab for FM, Fall 2010 38