Getting Started |
Functions
Functions are M-files that can accept input arguments and return output arguments. The name of the M-file and of the function should be the same. Functions operate on variables within their own workspace, separate from the workspace you access at the MATLAB command prompt.
A good example is provided by rank
. The M-file rank.m
is available in the directory
function r = rank(A,tol) % RANK Matrix rank. % RANK(A) provides an estimate of the number of linearly % independent rows or columns of a matrix A. % RANK(A,tol) is the number of singular values of A % that are larger than tol. % RANK(A) uses the default tol = max(size(A)) * norm(A) * eps. s = svd(A); if nargin==1 tol = max(size(A)') * max(s) * eps; end r = sum(s > tol);
The first line of a function M-file starts with the keyword function
. It gives the function name and order of arguments. In this case, there are up to two input arguments and one output argument.
The next several lines, up to the first blank or executable line, are comment lines that provide the help text. These lines are printed when you type
The first line of the help text is the H1 line, which MATLAB displays when you use the lookfor
command or request help
on a directory.
The rest of the file is the executable MATLAB code defining the function. The variable s
introduced in the body of the function, as well as the variables on the first line, r
, A
and tol
, are all local to the function; they are separate from any variables in the MATLAB workspace.
This example illustrates one aspect of MATLAB functions that is not ordinarily found in other programming languages - a variable number of arguments. The rank
function can be used in several different ways.
Many M-files work this way. If no output argument is supplied, the result is stored in ans
. If the second input argument is not supplied, the function computes a default value. Within the body of the function, two quantities named nargin
and nargout
are available which tell you the number of input and output arguments involved in each particular use of the function. The rank
function uses nargin
, but does not need to use nargout
.
Scripts | Global Variables |