4.1 变量与语句
程序中通过变量来存储数据,通过语句来处理数据。变量代表了一段可操作的内存,而语句代表了对变量执行的操作。本节将介绍MATLAB中变量与语句的相关知识。
4.1.1 变量命名
在MATLAB中,变量不需要预先声明就可以直接进行赋值操作。变量的命名遵循以下规则:
● 变量名和函数名对字母的大小写敏感。例如,x和X是两个不同的变量,sin是MATLAB定义的正弦函数,而SIN不是。
● 变量名必须以字母作为开端,其后可以是任意字母或下划线,但是不能有“空格”或非ASCII字符,例如:_xy、a.b均为不合法的变量名,而cNum_x是合法的变量名。
● 不能使用MATLAB的关键字作为变量名;例如,设置变量名为’if'、'end’等。
● 变量名最多可包含63个字符,从第64个字符开始及其之后的字符将被忽略。为了程序可读性及维护方便,变量名一般具有一定的含义。
● 避免使用函数名作为变量名。如果变量采用函数名,则该函数失效。
MATLAB提供isvarname函数来验证用户指定的变量名是否为MATLAB接受的合法变量名。该函数返回值为1或者0,分别代表合法或者不合法。
例4-1,变量命名验证示例。
在命令行窗口输入:
is_name1=isvarname('_x') is_name2=isvarname('Num_x')
输出结果如下:
is_name1 = 0 is_name2 = 1
4.1.2 变量类型
MATLAB变量分为三类:局部变量、全局变量和永久变量。
(1)局部变量
MATLAB中每个函数都有自己的局部变量;局部变量存储在该函数独立的工作区中,与其他函数的变量及主工作区中的变量分开存储。当函数调用结束后,局部变量将随之被删除。
(2)全局变量
全局变量在MATLAB全部工作区中有效。当在一个工作区内改变该变量的值时,该变量在其余工作区内的值也将改变。
全局变量的声明格式如下所示:
global X_Val
使用全局变量的目的是减少数据传递的次数,然而,使用全局变量容易造成难以察觉的错误。
(3)永久变量
永久变量可以用persistent声明,只能在M文件函数中定义和使用;改变了只允许声明它的函数存取和操作。当声明它的函数退出时,永久变量继续保存在内存中。
全局变量的声明格式如下所示:
persistent a
4.1.3 特殊变量
特殊变量是指MATLAB预定义的具有默认意义的变量。MATLAB预定义了许多特殊变量,这些变量具有系统默认的含义,详见表4.1。
表4.1 MATLAB特殊变量或函数
例4-2,特殊变量应用。
在命令行窗口输入:
pi*6^2 eps
输出结果如下:
ans = 113.0973 ans = 2.2204e-16
4.1.4 关键字
关键字是MATLAB程序设计中常用到的流程控制变量,共有20个,通过iskeyword命令即可查询这20个关键字。
例4-3,查询关键字。
在命令行窗口输入:
keywords=reshape(iskeyword, [5 4])
输出结果如下:
keywords = 'break' 'else' 'global' 'return' 'case' 'elseif' 'if' 'spmd' 'catch' 'end' 'otherwise' 'switch' 'classdef' 'for' 'parfor' 'try' 'continue' 'function' 'persistent' 'while'
注意,这些关键字不能作为变量名。
4.1.5 语句构成
MATLAB的语句为执行MATLAB程序的最小可执行单元,每个可执行的MATLAB语句必须包含一个主体,另外还可能出现句终符号和注释。
● 主体是指语句中发挥实际作用的句子或词,其可以为变量、函数式、程序控制语句等。例如例4-3中只有语句主体。
● 句终符号在语句的结尾,一般包括3种,分别为“, ”“; ”和回车。使用“, ”时,语句的输出暂缓;使用“; ”时,语句的输出被抑制;使用回车时,可以连续输入多行。所有的句终符号都不用,则直接输出结果或出错信息。
● 注释是MATLAB用来提供程序说明的补充性文字,其构成MATLAB语句,但在执行中被忽略。注释由“%”作为开始引出,可以单独成句,或放在句子后面对句子进行补充说明。在编写复杂程序时,尽量给句子加上注释可提高程序的可读性和可维护性。