
2.1 变量和数据操作
利用MATLAB解决问题的最基本操作就是定义一些变量,然后对变量进行运算操作。MAT-LAB提供了多种类型的变量,本节简要介绍最基础的变量类型,以及相应的数据操作。
2.1.1 变量与赋值
1. 变量
变量是任何程序设计语言的基本元素之一,MATLAB语言当然也不例外。在MATLAB中,变量的命名应遵循如下规则。
◆变量名必须以字母开头,之后可以是任意的字母、数字或下画线。
◆变量名区分字母的大小写。
◆变量名不超过31个字符,第31个字符以后的字符将被忽略。
与其他的程序设计语言相同,MATLAB中的变量也存在作用域的问题。在未加特殊说明的情况下,MATLAB将所识别的一切变量视为局部变量,仅在其使用的M文件内有效。若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global。一般来说,全局变量均用大写的英文字符表示。
2. 变量赋值
将数字的值赋给变量,那么此变量称为数值变量。在MATLAB下进行简单的数值运算,只需将运算式直接输入到提示号(>>)之后,并按〈Enter〉键即可。例如,要计算145与25的乘积,可以直接输入:

用户也可以输入:

此时MATLAB把计算值赋给指定的变量x。
2.1.2 预定义变量
MATLAB语言本身也具有一些预定义的变量,这些特殊的变量称为常量。表2-1给出了MAT-LAB语言中经常使用的一些特殊变量。
例2-1:显示圆周率pi的值。

解:在MATLAB命令窗口提示符“>>”后输入“pi”,然后按〈Enter〉键,出现以下内容。

这里“ans”是指当前的计算结果,若计算时用户没有对表达式设定变量,系统就自动将当前结果赋给特殊变量“ans”。
在定义变量时应避免与常量名相同,以免改变这些常量的值。如果已经改变了某个常量的值,可以通过“clear+常量名”命令恢复该常量的初始设定值。当然,重新启动MATLAB也可以恢复这些常量值。
表2-1 MATLAB中的预定义变量

例2-2:给圆周率pi赋值1,然后恢复。
解:MATLAB程序如下。


2.1.3 MATLAB变量保存
“当前文件夹”窗口可显示或改变当前目录,保存指定变量到当前工作目录,查看当前目录下的文件,如图2-1所示。

图2-1 “当前文件夹”窗口
在MATLAB中,save命令用于将工作区变量保存到文件中,它的使用格式见表2-2。
表2-2 save命令的使用格式

执行上述命令后,系统自动保存文件。要保存名为mode.mat的文件,以下语句是等效的:

要保存名为X的变量:

例2-3:保存变量文件。
解:MATLAB程序如下。


在当前文件夹下显示创建的shuzhi.mat文件和shuzhi.txt文件,如图2-2所示。

图2-2 保存文件
2.1.4 数据的输出格式
一般而言,在MATLAB中数据的存储与计算都是以双精度进行的,但有多种显示形式。在默认情况下,若数据为整数,就以整数表示;若数据为实数,则以保留小数点后4位的精度近似表示。
用户可以改变数字显示格式。控制数字显示格式的命令是format,其调用格式见表2-3。
例2-4:控制数字显示格式示例。
解:MATLAB程序如下。


表2-3 format调用格式

(续)

2.1.5 数据类型
MATLAB中的数据类型包括下面几种。
1. 数值类型
数值类型可以分为整型(有符号、无符号)和浮点型。
(1)整型
整型数据是不包含小数部分的数值型数据,用字母I表示。整型数据只用来表示整数,以二进制形式存储。下面介绍整型数据的分类。
◆char:字符型数据,属于整型数据的一种,占用1个字节。
◆unsigned char:无符号字符型数据,属于整型数据的一种,占用1个字节。
◆short:短整型数据,属于整型数据的一种,占用2个字节。
◆unsigned short:无符号短整型数据,属于整型数据的一种,占用2个字节。
◆int:有符号整型数据,属于整型数据的一种,占用4个字节。
◆unsigned int:无符号整型数据,属于整型数据的一种,占用4个字节。
◆long:长整型数据,属于整型数据的一种,占用4个字节。
◆unsigned long:无符号长整型数据,属于整型数据的一种,占用4个字节。
(2)浮点型
浮点型数据只采用十进制,有两种形式,即十进制数形式和指数形式。
1)十进制数形式:由数码0~9和小数点组成,如0.0、. 25、5.789、0.13、5.0、300.、-267.8230。

例2-5:显示十进制数字。
解:MATLAB程序如下。


2)指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为:
aEn
其中,a为十进制数,n为十进制整数,表示的值为a×10n。
例如,2.1E5等于2.1×105,3.7E-2等于3.7×10-2,0.5E7等于0.5×107,-2.8E-2等于-2.8×10-2。

例2-6:显示指数。
解:MATLAB程序如下。

下面介绍常见的不合法的实数。
◆E7:阶码标志E之前无数字。
◆53. -E3:负号位置不对。
◆2.7E:无阶码。
浮点型变量还可分为两类:单精度型和双精度型。
◆float:单精度说明符,占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供7位有效数字。
◆double:双精度说明符,占8个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
2. 逻辑类型
逻辑值为1、0,分别代表真、假。
3. 字符和字符串
MATLAB中字符串是进行符号运算表达式的基本构成单元。
4. 函数句柄
函数句柄是MATLAB中用来间接调用函数的一种语言结构,用于在使用函数过程中保存函数的相关信息,尤其是关于函数执行的信息。
5. 单元数组类型
一种无所不包的广义矩阵。组成单元数组的每一个元素称为单元。
6. 结构体类型
MATLAB结构体与C语言相似,一个结构体可以通过字段存储多个不同类型的数据。