
2.3 数据计算
强大的计算功能是MATLAB软件的特点,数据计算是MATLAB软件的基础。MATLAB包括各种各样的数据类型,主要包括数值、字符串、向量、矩阵、单元型数据及结构型数据。
MATLAB还提供了丰富的运算符,包括算术运算符、关系运算符和逻辑运算符三种,能满足用户的各种应用需求。
2.3.1 变量
1.变量
变量是任何程序设计语言的基本元素之一,MATLAB语言当然也不例外。变量是指在运行时其值可以被改变的量。变量是可以多次赋值的,因此变量常用于保存程序中的临时数据。
与其他的程序设计语言相同,在MATLAB语言中也存在变量作用域的问题。
(1)局部变量
在未加特殊说明的情况下,MATLAB语言将所识别的一切变量视为局部变量,即仅在其使用的M文件内有效。
(2)全局变量
若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字global。一般来说,全局变量均用大写的英文字符表示。
变量在使用前,必须在代码中进行声明,即创建(定义)该变量。
例2-2:定义变量。
解:MATLAB程序如下。


2.变量赋值
变量在赋值过程中,如果赋值变量已存在,则MATLAB将使用新值代替旧值,并以新值类型代替旧值类型。在MATLAB中变量的命名应遵循如下规则。
●变量名必须以字母开头,之后可以是任意的字母、数字或下画线。
●变量名区分字母的大小写。
●变量名不超过31个字符,第31个字符以后的字符将被忽略。
MATLAB赋值语句有两种格式:变量=表达式和表达式。
其中,表达式是用运算符将有关运算量连接起来的句子。一般情况下,运算结果在命令行窗口中显示出来,若不想让MATLAB每次都显示运算结果,只需在运算式最后加上分号(;)即可。
变量的初始化包括下面两种。
(1)用赋值语句初始化
如“x=1”。
(2)用input函数从键盘输入
如“x=input(‘请输入数据’)”。

例2-3:数值赋值。
解:MATLAB程序如下。


例2-4:给x赋值。
解:MATLAB程序如下。


3.预定义的变量
MATLAB语言本身也具有一些预定义的变量,也可以称之为常量,表2-5给出了MAT-LAB语言中经常使用的一些特殊变量。
与常规的程序设计语言不同的是,MATLAB并不要求事先对所使用的特殊变量进行声明,也不需要指定特殊变量类型,MATLAB语言会自动依据所赋予这些变量的值或对变量所进行的操作来识别变量的类型。

例2-5:显示圆周率pi的值。
解:MATLAB程序如下。

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


例2-6:显示实数与复数的值。
解:MATLAB程序如下。


例2-7:重定义变量pi值。
解:MATLAB程序如下。

4.变量函数
MATLAB中还有许多常用的变量函数。
在MATLAB中,who函数用于列出工作区中的变量,它的调用格式见表2-6。
表2-6 who调用格式

在MATLAB中,whos函数用于列出工作区中的变量及大小和类型,其调用格式与who函数相同,这里不再赘述。
在MATLAB中,exist函数用于检查变量、脚本、函数、文件夹或类的存在情况,它的调用格式见表2-7。
表2-7 exist调用格式


例2-8:检查变量的定义情况。
解:MATLAB程序如下。

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


例2-9:控制数字显示格式。
解:MATLAB程序如下。

表2-9 style类型格式

(续)

在MATLAB中,rat函数将数字以有理数(分数)形式输出,作用类似于format rat,其调用格式见表2-10。
表2-10 rat调用格式


例2-10:有理式显示预定义变量。
解:MATLAB程序如下。

2.3.3 算术运算符
MATLAB语言的算术运算符见表2-11。
其中,算术运算符加减乘除及乘方与传统意义上的加减乘除及乘方类似,用法基本相同,而点乘、点乘方等运算有其特殊的一面。点运算是指元素点对点的运算,即矩阵内元素对元素之间的运算。点运算要求参与运算的变量在结构上必须是相似的。
表2-11 MATLAB语言的算术运算符


例2-11:计算18÷7+15×6-8值。
解:MATLAB程序如下。

MATLAB常用的基本数学函数及三角函数见表2-12。
表2-12 基本数学函数与三角函数


例2-12:计算开方函数。
解:MATLAB程序如下。

当表达式比较复杂或重复出现的次数太多时,更好的办法是先定义变量,再由变量表达式计算得到结果。

例2-13:复数计算函数。
解:MATLAB程序如下。

2.3.4 关系运算符
关系运算符主要用于对矩阵与数、矩阵与矩阵进行比较,返回表示二者关系的由数0和1组成的矩阵,0和1分别表示不满足和满足指定关系。
MATLAB语言的关系运算符见表2-13。
表2-13 MATLAB语言的关系运算符


例2-14:计算关系运算符的值。
解:MATLAB程序如下。


2.3.5 逻辑运算符
MATLAB语言进行逻辑判断时,所有非零数值均为真,而零为假。在逻辑判断结果中,判断为真时输出1,判断为假时输出0。
MATLAB语言的逻辑运算符见表2-14。
表2-14 MATLAB语言的逻辑运算符

在算术、关系、逻辑三种运算符中,算术运算符优先级最高,关系运算符次之,而逻辑运算符优先级最低。在逻辑运算符中,“非”的优先级最高,“与”和“或”有相同的优先级。