1.2 数据运算
1.2.1 变量
1.变量的命名
变量就是在程序运行过程中,其数值可以变化的数据。变量可代表一个或若干个内存单元(变量的地址)中的数据。为了对变量所对应的存储单元进行访问,需要给变量命名。在MATLAB中,变量名可以是由字母、数字或下画线组成的字符序列,最多可包含 63 个字符,但第一个字符必须是字母。例如:myfile13、ab 1cd、EXAMPE等均为合法变量名,而 3dat、mydat、123.4 等都不是合法变量名。
在MATLAB中,变量名区分字母的大小写,大小写不同的两个变量名被认为是两个不同的变量。例如A1和a1是两个不同的变量;另外,MATLAB不支持汉字,汉字不能出现在变量名和文件名中。
2.赋值语句
赋值语句的格式:
说明:表达式是用运算符把特殊字符、函数名、变量名等有关运算量连接起来的式子。执行后将右边表达式的值赋给左边的变量。如果缺省变量名,表达式的值赋给预定义变量ans。
赋值语句的运算结果能在命令行窗口中显示,如果在语句的最后加分号,那么MATLAB仅执行赋值操作,不显示运算的结果,以抑制不必要的信息显示。如果运算的结果是一个很大的矩阵或根本不需要观察运算结果,则可以在语句的最后加上分号。
如果表达式较长,在一行中放不下,则可以在行末输入 3 个小黑点表示的续行符(…),指明下一行为续行。例如:
由于 “;” 的存在,计算结果s=0.6532并没有显示出来。如果续行符前面是数字,直接使用续行符会出现错误。有两种解决方法:一种是再加一个点(共4个点),另一种是先空一格然后再加续行符。
3.预定义变量
在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋值。除前面出现过的ans外,还有一些常用的预定义变量,如表1-2所示。
表1-2 常用的预定义变量
如果自定义变量名与预定义变量名或内部函数名相同,那么在清除该自定义变量之前,相应的函数和预定义变量都无效。
请思考:与inf或nan运算,会得到什么结果?
1.2.2 常用数学函数
MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算规则是将函数作用于矩阵的每一个元素,因而函数运算结果是一个与自变量相同维数的矩阵。MATLAB的常用数学函数如表1-3所示。
表1-3MATLAB的常用数学函数
三角函数按弧度计算。另外,mod(x,y)与y符号相同,rem(x,y)与 x 符号相同;当x与y同号时,mod(x,y)等于rem(x,y)。
【例1-4】 计算3.14的余弦函数、自然对数、以e为底的指数、朝零方向取整和朝正无穷方向取整运算后的数值。
在命令行窗口输入:
1.2.3 数据操作
1.input函数
MATLAB提供了一些输入输出函数,允许用户通过计算机键盘与MATLAB进行数据交换。如果用户想从键盘输入数据,则可以使用input函数来进行。该函数的调用格式为:
说明:提示信息是一个字符串,用于提示用户输入什么样的数据,字符串中若有 “\n”,则表示换行输入。参数s表示允许用户通过键盘输入字符串;如果缺省 s,则只允许用户输入一个字符或数字。例如:
命令行窗口显示如下:
命令行窗口显示如下:
2.disp函数
MATLAB提供的命令行窗口输出函数主要是disp函数,其调用格式为:
说明:其中输出项既可以是用单引号括起来的数字、字符或字符串也可以是汉字,也可以是矩阵、变量。
例如输出上例创建的字符矩阵a。
命令行窗口显示如下:
用disp函数显示矩阵时将不显示矩阵的名字,而且其格式更紧密,不留没有意义的空行。
请思考:如何在命令行窗口显示自己的名字?
3.pause函数
当程序运行时,为了查看程序的中间结果或观看输出的图形,有时需要暂停程序的执行。这时可以使用pause函数,其调用格式如下:
说明:n是一个常数,表示延迟多少秒。如果省略延迟时间,直接使用pause,则将暂停程序,直到用户单击任意键后程序继续执行。若要强行中止程序的运行可使用〈Ctrl+C〉命令。
4.save命令
save命令是将MATLAB工作空间中的变量存入磁盘。其具体格式如下:
将当前MATLAB工作空间中所有变量以二进制格式存入名为matlab.mat(默认的文件名)的文件中,可在操作界面上工具栏旁的当前文件夹显示的文件夹中,找到该文件。
将当前工作空间中的所有变量以二进制格式存入当前路径下的文件dfile.mat中,扩展名mat自动产生。如果文件要保存在其他路径,可在文件名前加上路径。例如:在命令行窗口输入save d:\example1,则将example1文件存在D盘根目录下。
只把变量 a、b以二进制格式存入dfile.mat文件,扩展名自动产生。若存入多个变量,变量名之间用 “空格” 分隔。
将变量a以8位ASCII码形式存入dfile.mat文件。
将变量a以16位ASCII码形式存入dfile.mat文件。
fname是一个预先定义好的包含文件名的字符串,该用法将变量a以 ASCII 码格式存入由fname定义的文件中。由于在这种用法中,文件名是一个字符变量,因此可以方便地通过编程的方法存储一系列数据文件。
5.load命令
与save命令相对应,load函数是将磁盘上的数据读入工作空间。其具体格式如下:
把磁盘文件matlab.mat(默认的文件名)的内容读入内存,由于存储.mat文件时已包含了变量名的信息,因此调回时已直接将原变量信息带入,不需要重新赋值变量。
把磁盘文件dfile.mat的内容读入内存。
fname是一个预先定义好的包含文件名的字符串,将由fname定义文件名的数据文件读入变量x中,使用这种方法可以通过编程方便地调入一系列数据文件。
【例1-5】 定义3个变量a=2,b=4,c=6,全部存入一个文件中,再把 a、b存入另一个文件中;清空工作空间后,检查工作空间,然后调入变量a,再检查工作空间。
命令行窗口显示如下: