主要内容

持续的

定义持久性变量

描述

例子

持久var1……varN声明变量var1……varN是持久的。持续的本地变量是函数声明他们,然而他们之间的值保留在内存中调用函数。在MATLAB代码®命令行和其他函数不能改变持久变量。

当MATLAB第一次遇到一个特别的持续的持久变量声明,它初始化一个空矩阵([])。

MATLAB清除持久变量当你明确的或修改的函数在内存中。保持在内存中,函数使用mlock

例子

全部折叠

创建函数myFun在你当前的工作目录。每次调用函数的值n增加。

函数myFun ()持续的n如果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作为一个持久变量存储最后一次logData写文件。

在你当前的工作目录,文件定义的logData函数。

函数logData(帧,n)持续的logTime currTime = datetime;如果isempty (logTime) logTime = currTime;disp (日志记录初始值。)dlmwrite(帧,n)返回结束dt = currTime - logTime;如果(3)disp (dt >秒“日志”。)dlmwrite(帧,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 ()持续的n如果isempty (n) n = 0;结束n = n + 1;结束

  • 变量的声明作为持久必须先于任何引用变量,包括输入或输出参数。例如,持续的声明在以下功能是无效的。

    函数myfunA (x)持续的x结束函数myfunB x = 0;持续的x结束

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

扩展功能

版本历史

之前介绍过的R2006a