0% found this document useful (0 votes)
28 views

User Defined Functions: Domain Range

This document provides an overview of user-defined functions in MATLAB. It discusses how to create function M-files, the required function declaration syntax, function naming conventions, accepting inputs and returning outputs, and using local, global and persistent variables in functions. Examples are provided throughout to demonstrate concepts like defining multiple input/output functions, checking the number of inputs/outputs, and creating a simple random number generating function.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views

User Defined Functions: Domain Range

This document provides an overview of user-defined functions in MATLAB. It discusses how to create function M-files, the required function declaration syntax, function naming conventions, accepting inputs and returning outputs, and using local, global and persistent variables in functions. Examples are provided throughout to demonstrate concepts like defining multiple input/output functions, checking the number of inputs/outputs, and creating a simple random number generating function.
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 38

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

You might also like