persistent X Y Z 将X,Y,Z定义为在其声明处的函数的局部变量。然而,这些变量的值在函数调用期间在内存中保存(应该是堆区)。Persistent 变量和global(全局)变量相似,因为Matlab为他们创建永久的存储空间。但是Persistent变量与global(全局)变量不同之处在于 Persistent变量只对声明该变量的函数是可见的。这可以防止该变量被其他函数或者Matlab命令行改变。
当M文件被从内存中清除或当M文件被改变时,Persistent变量被清除。
如果Persistent变量在声明时没有赋值,将被初始化为空矩阵。
如果在当前工作空间中有同名的变量存在,则声明同名的Persistent变量将会报错。
Matlab不允许将Persistent变量声明为函数参数。
其实就是定义局部静态变量的语法,变量生命期为全局,但是可见性在其被声明的函数内部
Examples20100106
function y=testPersistent()
persistent a;
if isempty(a)%初始化方法
a=0;
end
a=a+1;
y=a;
之后调用一次y=testPersistent;y的值都会加一。
清除工作区间的a变量的值(要使得y的只清空,重新计算)clear y或者clear all(清除全部变量的值)即可
感谢原作者,转自http://blog.sina.com.cn/s/blog_4b94ff130100e9xl.html