一贯

定义持久性变量

描述

持久var1……varN声明变量VAR1 ... VARN是持久的。持久变量是声明它们的函数的局部变量,但是它们的值在调用函数之间保留在内存中。MATLAB中的代码®命令行和其他函数不能更改持久变量。

当MATLAB第一次遇到特殊情况时一贯声明中,它初始化持久变量设置为空矩阵([])。

MATLAB清除当您清除或修改功能是在内存中的持久变量。为了保持功能在内存中,使用m锁

例子

全部收缩

创建功能myFun在当前工作文件夹中。每次调用函数时,的值ñ增加。

函数myFun()一贯ñ如果的isEmpty(n)的N = 0;结束n = n + 1结束

在命令提示符处调用myFun三次。

myFun myFun myFun
n = 1的N = 2 n = 3的

清晰的myFun然后再打两次电话。清除函数也清除持久变量。

清晰的myFunmyFun myFun
n = 1的n = 2的

如果写至少三秒钟自上次日志项通过了记录数据的功能。限定logTime Description该条作为一个持久变量,存储上一次的时间logData写信给该文件。

在当前工作文件夹中的文件中,定义logData功能。

函数logData(FNAME,n)的一贯logTime currTime =日期时间;如果isempty(logTime) logTime = currTime;disp (“记录初始值。”)dlmwrite(FNAME,n)的返回结束dt = currTime - logTime;如果DT>秒(3)DISP(“记录”。)dlmwrite(FNAME,N,'-附加') logTime = currTime;其他DISP([“不记录。“num2str(秒(DT))美国证券交易委员会自去年日志“。])结束结束

在命令提示符处调用logData在一个循环。该环具有10次迭代,并且每次迭代需要大约1秒。因此,MATLAB写入4个值给myLog.txt(大约0、3、6和9秒)。

对于N = 1:10暂停(1)logData('myLog.txt'兰德)结束
记录初始值。没有日志记录。1.005秒,从上次记录开始。没有日志记录。2.009秒。日志记录。没有日志记录。距离上次记录1.007秒。没有日志记录。2.013秒。 Logging. Not logging. 1.005 sec since last log. Not logging. 2.007 sec since last log. Logging.

调用logData再次处理功能增加另一个值。

logData('myLog.txt'兰德)
日志记录。

清除logData功能重新初始化持久变量。调用logData函数了。这一次,函数将被覆盖myLog.txt而不是附加一个值。

清晰的logDatalogData('myLog.txt'兰德)
记录初始值。

提示

  • 持久变量与全局变量类似,因为MATLAB为这两个变量创建了永久存储。它们与全局变量不同,因为持久变量只有声明它们的函数才知道。因此,MATLAB命令行或其他函数中的代码不能更改持久变量。

  • 由于MATLAB初始化的持久变量到一个空的矩阵([]),通常的功能检查,看看是否持久变量是空的,并且,如果是的话,对其进行初始化。

    函数myFun()一贯ñ如果的isEmpty(n)的N = 0;结束n = n + 1;结束

  • 将变量声明为持久变量必须在对该变量的任何其他引用(包括输入或输出参数)之前。例如,一贯下列函数中的声明无效。

    函数myfunA (x)一贯X结束函数myfunB X = 0;一贯X结束

  • 要清除一个持久变量,使用清晰的与声明变量的函数的名称。例如,明确myFun

扩展功能

之前介绍过的R2006a