PSYCHTOOLBOX工具箱及MATLAB编程实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 变量类型

3.3.1 局部变量

在函数体内定义的变量为局部变量,只能被定义的函数所访问,函数运行结束,局部变量所占用的内存空间自动释放(局部变量也就不存在了),不同的函数可以使用相同的局部变量名,因为不同的函数有独立的存储空间。

3.3.2 全局变量

全局变量需要使用global关键字来声明,不同函数可以共享全局变量的内容,当一个函数对全局变量进行修改后,其他函数所读取的全局变量值也发生相应变化。

3.3.3 永久变量

永久变量(persistent)只能在M文件的函数中定义和使用,需要在使用该变量的前面定义,其初始化值为空([ ])。与局部变量不同的是,即使函数退出,永久变量也不会从内存中清除,当下次调用该函数时,仍保留退出前的变量值。

下面的例子中将变量avalue定义为永久变量,每调用一次函数plusone,永久变量avalue的值增加1,并将其赋值给返回参数ret,程序代码如下:

%plusone.m      (文件位于Psyfeng\Little_Examples目录下)
function ret=plusone
persistent avalue; %定义变量avalue为永久变量
if isempty(avalue)
    avalue=1; %如果变量值为空,则对其赋值1
else
    avalue=avalue+1; %如果不为空,则变量值加1
end
ret=avalue; %将变量值赋予返回参数ret
end

然后在命令窗口中调用函数plusone,结果如下:

>> plusone↙
ans =
    1
>> plusone↙
ans =
    2
>> plusone↙
ans =
    3

可以看出,每执行函数pluseone一次,返回值增加1。