MATLAB Function Reference |
Syntax
Description
persistent X Y Z
defines X
, Y
, and Z
as variables that are local to the function in which they are declared; yet their values are retained in memory between calls to the function. Persistent variables are similar to global variables because MATLAB creates permanent storage for both. They differ from global variables in that persistent variables are known only to the function in which they are declared. This prevents persistent variables from being changed by other functions or from the MATLAB command line.
Persistent variables are cleared when the M-file is cleared from memory or when the M-file is changed. To keep an M-file in memory until MATLAB quits, use mlock
.
If the persistent variable does not exist the first time you issue the persistent
statement, it is initialized to the empty matrix.
It is an error to declare a variable persistent if a variable with the same name exists in the current workspace.
Remarks
There is no function form of the persistent
command (i.e., you cannot use parentheses and quote the variable names).
Example
This function prompts a user to enter a directory name to use in locating one or more files. If the user has already entered this information, and it requires no modification, they do not need to enter it again. This is because the function stores it in a persistent variable (lastDir
), and offers it as the default selection. Here is the function definition:
function find_file(file) persistent lastDir if isempty(lastDir) prompt = 'Enter directory: '; else prompt = ['Enter directory[' lastDir ']: ']; end response = input(prompt, 's'); if ~isempty(response) dirName = response; else dirName = lastDir; end dir(strcat(dirName, file)) lastDir = dirName;
Execute the function twice. The first time, it prompts you to enter the information and does not offer a default:
cd(matlabroot) find_file('is*.m') Enter directory: toolbox/matlab/strfun/ iscellstr.m ischar.m isletter.m isspace.m isstr.m isstrprop.m
The second time, it does offer a default taken from the persistent variable dirName
:
find_file('is*.m') Enter directory[toolbox/matlab/strfun/]: toolbox/matlab/elmat/ isempty.m isfinite.m isscalar.m isequal.m isinf.m isvector.m isequalwithequalnans.m isnan.m
See Also
global
, clear
, mislocked
, mlock
, munlock
, isempty
permute | pi |
© 1994-2005 The MathWorks, Inc.