3.1 数组运算
数组运算是MATLAB计算的基础。由于MATLAB面向对象的特性,这种数值数组成为MATLAB最重要的一种内建数据类型,而数组运算就是定义这种数据结构的方法。本节将系统地列出具备数组运算能力的函数名称,为兼顾一般性,以二维数组的运算为例,读者可推广至多维数组和多维矩阵的运算。
下面介绍在MATLAB中如何创建数组,以及数组的常用操作等,包括数组的算术运算、关系运算和逻辑运算。
3.1.1 数组的创建和操作
在MATLAB中一般使用方括号“[ ]”、逗号“,”、空格和分号“;”来创建数组,数组中同一行的元素使用逗号或空格进行分隔,不同行之间用分号进行分隔。
例3-1:创建空数组、行向量、列向量示例。
在命令行窗口中依次输入:
输出结果:
例3-2:访问数组示例。
在命令行窗口中依次输入:
输出结果:
例3-3:子数组的赋值示例。
在命令行窗口中依次输入:
输出结果:
在MATLAB中还可以通过其他各种方式创建数组,具体如下所示。
1.通过冒号创建一维数组
在MATLAB中,通过冒号创建一维数组的代码如下:
其中,A是创建一维数组的第一个变量,step是每次递增或递减的数值,直到最后一个元素和B的差的绝对值小于或等于step的绝对值为止。
例3-4:通过冒号创建一维数组示例。
在命令行窗口中依次输入:
输出结果:
2.通过logspace()函数创建一维数组
在MATLAB中常用logspace()函数创建一维数组,该函数的调用方式如下。
● y=logspace(a,b):该函数创建行向量y,第一个元素为10a,最后一个元素为10b,形成总数为50个元素的等比数列。
● y=logspace(a,b,n):该函数创建行向量y,第一个元素为10a,最后一个元素为10b,形成总数为n个元素的等比数列。
例3-5:通过logspace()函数创建一维数组示例。
在命令行窗口中依次输入:
输出结果:
3.通过linspace()函数创建一维数组
在MATLAB中常用linspace()函数创建一维数组,该函数的调用方式如下。
● y=linspace(a,b):该函数创建行向量y,第一个元素为a,最后一个元素为b,形成总数为100个元素的线性间隔向量。
● y=linspace(a,b,n):该函数创建行向量y,第一个元素为a,最后一个元素为b,形成总数为n个元素的线性间隔向量。
例3-6:通过linspace()函数创建一维数组示例。
在命令行窗口中依次输入:
输出结果:
3.1.2 数组的常见运算
1.数组的算术运算
数组的运算是从数组的单个元素出发,针对每个元素进行的运算。在MATLAB中,一维数组的算术运算包括加、减、乘、左除、右除和乘方。
数组的加减运算:通过格式A+B或A-B可实现数组的加减运算。但是运算规则要求数组A和B的维数相同。
○提示
如果两个数组的维数不相同,则将给出错误的信息。
例3-7:数组的加减运算示例。
在命令行窗口中依次输入:
输出结果:
数组的乘除运算:通过格式“.*”或“./”可实现数组的乘除运算。但是运算规则要求数组A和B的维数相同。
乘法:数组A和B的维数相同,运算为数组对应元素相乘,计算结果与A和B是相同维数的数组。
除法:数组A和B的维数相同,运算为数组对应元素相除,计算结果与A和B是相同维数的数组。
右除和左除的关系:A./B=B.\A,其中A是被除数,B是除数。
○提示
如果两个数组的维数不相同,则将给出错误的信息。
例3-8:数组的乘法运算示例。
在命令行窗口中依次输入:
输出结果:
例3-9:数组的除法运算示例。
在命令行窗口中依次输入:
输出结果:
通过乘方格式“.^”实现数组的乘方运算。数组的乘方运算包括数组间的乘方运算、数组与某个具体数值的乘方运算,以及常数与数组的乘方运算。
例3-10:数组的乘方运算示例。
在命令行窗口中依次输入:
输出结果:
通过使用函数dot()可实现数组的点积运算,但是运算规则要求数组A和B的维数相同,其调用格式如下:
● C=dot(A,B)。
● C=dot(A,B,dim)。
例3-11:数组的点积运算示例。
在命令行窗口中依次输入:
输出结果:
2.数组的关系运算
在MATLAB中提供了6种数组关系运算符,即<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(恒等于)、~=(不等于)。
关系运算的运算法则如下:
● 当两个比较量是标量时,直接比较两个数的大小。若关系成立,则返回的结果为1,否则为0。
● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。
例3-12:数组的关系运算示例。
在命令行窗口中依次输入:
输出结果:
3.数组的逻辑运算
在MATLAB中提供了3种数组逻辑运算符,即&(与)、|(或)和~(非)。逻辑运算的运算法则如下:
● 如果是非零元素则为真,用1表示;如果是零元素则为假,用0表示。
● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的逻辑运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。
● 在进行与运算(a&b)时,a、b全为非零,则为真,运算结果为1。在进行或运算(a|b)时,只要a、b有一个为非零,则运算结果为1。在进行非运算(~a)时,若a为0,则运算结果为1;若a为非零,则运算结果为0。
例3-13:数组的逻辑运算示例。
在命令行窗口中依次输入:
输出结果: