Programming and Data Types |
You can call function M-files from either the MATLAB command line or from within other M-files. Be sure to include all necessary arguments, enclosing input arguments in parentheses and output arguments in square brackets.
This section provides the following information on calling MATLAB functions:
Function Name Resolution
When MATLAB comes upon a new name, it resolves it into a specific function by following these steps:
If you duplicate function names, MATLAB executes the one found first using the above rules. It is also possible to overload function names. This uses additional dispatching rules and is discussed in the section, How MATLAB Determines Which Method to Call.
What Happens When You Call a Function
When you call a function M-file from either the command line or from within another M-file, MATLAB parses the function into pseudocode and stores it in memory. This prevents MATLAB from having to reparse a function each time you call it during a session. The pseudocode remains in memory until you clear it using the clear
function, or until you quit MATLAB.
You can use clear
in any of the following ways to remove functions from the MATLAB workspace.
Syntax |
Description |
clear function_name |
Remove specified function from workspace |
clear functions |
Remove all compiled M-functions |
clear all |
Remove all variables and functions |
Creating P-Code Files
You can save a preparsed version of a function or script, called P-code files, for later MATLAB sessions using the pcode
function. For example,
parses average.m
and saves the resulting pseudocode to the file named average.p
. This saves MATLAB from reparsing average.m
the first time you call it in each session.
MATLAB is very fast at parsing so the pcode
function rarely makes much of a speed difference.
One situation where pcode
does provide a speed benefit is for large GUI applications. In this case, many M-files must be parsed before the application becomes visible.
Another situation for pcode
is when, for proprietary reasons, you want to hide algorithms you've created in your M-file.
How MATLAB Passes Function Arguments
From the programmer's perspective, MATLAB appears to pass all function arguments by value. Actually, however, MATLAB passes by value only those arguments that a function modifies. If a function does not alter an argument but simply uses it in a computation, MATLAB passes the argument by reference to optimize memory use.
Function Workspaces
Each M-file function has an area of memory, separate from the MATLAB base workspace, in which it operates. This area is called the function workspace, with each function having its own workspace context.
While using MATLAB, the only variables you can access are those in the calling context, be it the base workspace or that of another function. The variables that you pass to a function must be in the calling context, and the function returns its output arguments to the calling workspace context. You can however, define variables as global variables explicitly, allowing more than one workspace context to access them.
Basic Parts of a Function M-File | Checking the Number of Function Arguments |