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文件。
假定变量a和b存在于MATLAB工作区中,输入以下命令便可将a和b保存于当前文件夹的mydata.mat文件中:
save mydata a b
mydata是用户自己起的文件名,MAT文件默认扩展名为.mat。若要让mydata.mat文件存放在指定的文件夹(如c:\matlab\work文件夹)中,则执行以下命令:
save c:\matlab\work\mydata a b
在后续的计算中需要使用mydata.mat文件中的矩阵a和b,则执行以下命令:
load mydata
执行上述命令后,如果MATLAB工作区已存在变量a、b,则用mydata.mat文件中的矩阵a和b的值替换工作区变量a、b的值;如果MATLAB 工作区不存在变量a、b,则将mydata.mat文件中的矩阵a和b加载到工作区。
除了操作命令以外,还可以通过以下方法将工作区中的全部变量保存到MAT文件。
(1)单击MATLAB桌面的“主页”选项卡“变量”组中的“保存工作区”按钮;
(2)单击工作区面板右上角的“显示工作区操作”按钮,从弹出的菜单中选“保存”命令;
(3)打开变量编辑器,单击快速访问工具栏中的“保存”按钮。
如果只想保存工作区的部分变量,就应在选择这些变量后,从右键菜单中选择“另存为”命令。