变量

第2章介绍了变量的命名和数据类型,这里继续介绍变量的有关知识,包括变量的作用范围和存活期等,并分别从空间和时间两个维度讨论变量的有效性。[大谦MATLAB,dqmatlab点com]

变量的作用范围

有的变量可以在整个程序中起作用,有的变量则只能在程序的一定范围内起作用。变量的作用范围被称为作用域。根据作用域的不同,变量可以分为下面两种。

局部变量

每个MATLAB函数都有自己的局部变量。局部变量的作用范围仅限于本函数,一旦程序运行范围超出本函数,则变量的值将不再被保留。

全局变量

全局变量用global关键字进行声明,其作用范围为整个M文件。

如果希望扩展变量的作用范围,则可以采用两种方法。一种方法是将该变量作为函数参数进行传递;另一种方法是将该变量声明为全局变量。

注意:将变量作为函数参数进行传递的方法更保险,因为当声明为全局变量时,可能会在无意中更改该变量的值。此时程序往往可以运行,但结果可能不正确,而且错误较难排查。

变量的存活期

变量的存活期代表变量保持其值的能力。在MATLAB中有一种变量类型被称为persistent variable,即固定变量。固定变量类似C、Basic等语言中的静态变量,即可以保持变量的值。固定变量用persistent关键字声明,它具有以下特点:

只能用在函数中;

其他函数不能获取它们;

函数存在时MATLAB不将它们从内存中清除,所以变量能始终保留值;

如果清除了函数或编辑了该函数的M文件,则MATLAB会清除用于该函数的所有固定变量。

可以用mlock函数防止M文件从内存中被清除,这样可以防止M文件中的固定变量也从内存中被清除。