2.2 变量及其操作

2.2.1 变量与赋值

计算机所处理的数据存放在内存单元中。机器语言或汇编语言是通过内存单元的地址来访问内存单元,而在高级语言中,无须直接通过内存单元的地址,而只需给内存单元命名,以后通过内存单元的名字来访问内存单元。命了名的内存单元就是变量,在程序运行期间,该内存单元中存放的数据可以发生变化。

1.变量命名

在MATLAB中,变量名是以字母开头,后跟字母、数字或下画线的字符序列,最多63个字符。例如,x、x_1、x2均为合法的变量名。在MATLAB中,变量名区分字母的大小写,这样, addr、Addr和ADDR表示3个不同的变量。另外,不能使用MATLAB的关键字作为变量名,如if、end、exist不能作为变量名。

注意:定义变量时应避免创建与预定义变量、函数同名的变量,如i、j、power、int16、format、path等。一般情况下,变量名称优先于函数名称。如果创建的变量使用了某个函数的名称,可能导致计算过程、计算结果出现意外情况。可以使用exist或which函数检查拟用名称是否已被使用。如果不存在与拟用名称同名的变量、函数或M文件,exist 将返回0,否则返回一个非零值。例如:

>> exist power

ans =

  5

>> exist Power

ans =

  0

2.赋值语句

MATLAB赋值语句有两种格式:

变量=表达式

表达式

其中,表达式是用运算符将有关运算量连接起来的式子。执行第一种语句,MATLAB将右边表达式的值赋给左边的变量;执行第二种语句,可将表达式的值赋给MATLAB的预定义变量ans。

一般来说,运算结果在命令行窗口中显示出来。如果在命令的最后加分号,那么,MATLAB仅执行赋值操作,不显示运算的结果。如果运算的结果是一个很大的矩阵或根本不需要运算结果,则可以在命令的最后加上分号。

在 MATLAB 命令后面可以加上注释,用于解释或说明命令的含义,它对命令处理结果不产生任何影响。注释以%开头,后面是注释的内容。

【例2.1】 当 时,计算表达式 的值,并将结果赋给变量y,然后显示结果。

在MATLAB命令行窗口分别输入以下命令:

>> x=sqrt(1+pi);

>> y=(exp(x)+log(abs(sin(x)^2-sin(x*x))))/(x-5i)     %计算表达式的值

y =

  0.5690 + 1.3980i

其中,pi和i都是MATLAB的预定义变量,分别代表圆周率π和虚数单位。

3.预定义变量

MATLAB提供了一些系统定义的特殊变量,这些变量称为预定义变量。表2.5列出了一些常用的预定义变量。预定义变量有特定的含义,在使用时应避免对这些变量重新赋值。

表2.5 常用的预定义变量

MATLAB提供了isfinite函数用于判定数据对象是否为有限值,isinf函数用于判定数据对象是否为无限值,isnan函数用于确定数据对象中是否含有NaN值。

2.2.2 变量的管理

1.内存变量的显示与修改

who命令按字母顺序列出当前工作区中的所有变量,whos命令按字母顺序列出当前工作区中的所有变量及其大小、类型。下面的例子说明了who和whos命令的区别。

>> who

您的变量为:

R a b c t x y z

>> whos

  Name    Size       Bytes Class   Attributes

  R      1x1         2 int8   complex

  a      1x315       2520 double

  b      2x3         48 double

  c      2x3         96 double  complex

  t      1x100        800 double

  x      1x1          8 double

  y      1x1         16 double  complex

  z     100x315      252000 double

“clear”命令用于清除MATLAB工作区中的变量,但预定义变量不会被清除。

MATLAB工作区面板用于内存变量的管理。当选中某些变量后,按Del键或从右键菜单中选择“删除”命令,就能从内存中删除这些变量。当选中某个变量后,双击该变量或从右键菜单中选择“打开所选内容”命令,将打开变量编辑器,如图2.3所示。通过变量编辑器可以观察变量,也可以修改变量中的元素值和修改变量结构。

2.内存变量文件

利用MAT文件可以把当前MATLAB工作区中的变量长久地保留下来。MAT文件是MATLAB保存数据的一种标准格式二进制文件。MAT文件的生成和加载由“save”和“load”命令来完成,常用格式为

save 文件名 变量名表 -append -ascii

load 文件名 变量名表 -ascii

图2.3 变量编辑器

其中,文件名可以带路径,命令默认对 MAT 文件进行操作,文件保存在当前文件夹下。变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格分隔。当变量名表省略时,保存或加载全部变量。-ascii 选项使文件以 ASCII 格式处理,省略该选项时文件将以二进制格式处理。save命令中的-append选项将变量追加到指定MAT文件。

假定变量ab存在于MATLAB工作区中,输入以下命令便可将ab保存于当前文件夹的mydata.mat文件中:

save mydata a b

mydata是用户自己起的文件名,MAT文件默认扩展名为.mat。若要让mydata.mat文件存放在指定的文件夹(如c:\matlab\work文件夹)中,则执行以下命令:

save c:\matlab\work\mydata a b

在后续的计算中需要使用mydata.mat文件中的矩阵ab,则执行以下命令:

load mydata

执行上述命令后,如果MATLAB工作区已存在变量ab,则用mydata.mat文件中的矩阵ab的值替换工作区变量ab的值;如果MATLAB 工作区不存在变量ab,则将mydata.mat文件中的矩阵ab加载到工作区。

除了操作命令以外,还可以通过以下方法将工作区中的全部变量保存到MAT文件。

(1)单击MATLAB桌面的“主页”选项卡“变量”组中的“保存工作区”按钮

(2)单击工作区面板右上角的“显示工作区操作”按钮,从弹出的菜单中选“保存”命令;

(3)打开变量编辑器,单击快速访问工具栏中的“保存”按钮

如果只想保存工作区的部分变量,就应在选择这些变量后,从右键菜单中选择“另存为”命令。