MATLAB R2020a完全自学一本通
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 数组运算

数组运算是MATLAB计算的基础。由于MATLAB面向对象的特性,这种数值数组成为MATLAB最重要的一种内建数据类型,而数组运算就是定义这种数据结构的方法。本节将系统地列出具备数组运算能力的函数名称,为兼顾一般性,以二维数组的运算为例,读者可推广至多维数组和多维矩阵的运算。

下面介绍在MATLAB中如何创建数组,以及数组的常用操作等,包括数组的算术运算、关系运算和逻辑运算。

3.1.1 数组的创建和操作

在MATLAB中一般使用方括号“[ ]”、逗号“,”、空格和分号“;”来创建数组,数组中同一行的元素使用逗号或空格进行分隔,不同行之间用分号进行分隔。

3-1创建空数组、行向量、列向量示例。

在命令行窗口中依次输入:

img

输出结果:

img

3-2访问数组示例。

在命令行窗口中依次输入:

img

输出结果:

img

3-3子数组的赋值示例。

在命令行窗口中依次输入:

img

输出结果:

img

在MATLAB中还可以通过其他各种方式创建数组,具体如下所示。

1.通过冒号创建一维数组

在MATLAB中,通过冒号创建一维数组的代码如下:

img

其中,A是创建一维数组的第一个变量,step是每次递增或递减的数值,直到最后一个元素和B的差的绝对值小于或等于step的绝对值为止。

3-4通过冒号创建一维数组示例。

在命令行窗口中依次输入:

img

输出结果:

img

2.通过logspace()函数创建一维数组

在MATLAB中常用logspace()函数创建一维数组,该函数的调用方式如下。

● y=logspace(a,b):该函数创建行向量y,第一个元素为10a,最后一个元素为10b,形成总数为50个元素的等比数列。

● y=logspace(a,b,n):该函数创建行向量y,第一个元素为10a,最后一个元素为10b,形成总数为n个元素的等比数列。

3-5通过logspace()函数创建一维数组示例。

在命令行窗口中依次输入:

img

输出结果:

img

3.通过linspace()函数创建一维数组

在MATLAB中常用linspace()函数创建一维数组,该函数的调用方式如下。

● y=linspace(a,b):该函数创建行向量y,第一个元素为a,最后一个元素为b,形成总数为100个元素的线性间隔向量。

● y=linspace(a,b,n):该函数创建行向量y,第一个元素为a,最后一个元素为b,形成总数为n个元素的线性间隔向量。

3-6通过linspace()函数创建一维数组示例。

在命令行窗口中依次输入:

img

输出结果:

img

3.1.2 数组的常见运算

1.数组的算术运算

数组的运算是从数组的单个元素出发,针对每个元素进行的运算。在MATLAB中,一维数组的算术运算包括加、减、乘、左除、右除和乘方。

数组的加减运算:通过格式A+B或A-B可实现数组的加减运算。但是运算规则要求数组A和B的维数相同。

○提示

如果两个数组的维数不相同,则将给出错误的信息。

3-7数组的加减运算示例。

在命令行窗口中依次输入:

img

输出结果:

img

数组的乘除运算:通过格式“.*”或“./”可实现数组的乘除运算。但是运算规则要求数组A和B的维数相同。

乘法:数组A和B的维数相同,运算为数组对应元素相乘,计算结果与A和B是相同维数的数组。

除法:数组A和B的维数相同,运算为数组对应元素相除,计算结果与A和B是相同维数的数组。

右除和左除的关系:A./B=B.\A,其中A是被除数,B是除数。

○提示

如果两个数组的维数不相同,则将给出错误的信息。

3-8数组的乘法运算示例。

在命令行窗口中依次输入:

img

输出结果:

img

3-9数组的除法运算示例。

在命令行窗口中依次输入:

img

输出结果:

img

通过乘方格式“.^”实现数组的乘方运算。数组的乘方运算包括数组间的乘方运算、数组与某个具体数值的乘方运算,以及常数与数组的乘方运算。

3-10数组的乘方运算示例。

在命令行窗口中依次输入:

img

输出结果:

img

通过使用函数dot()可实现数组的点积运算,但是运算规则要求数组A和B的维数相同,其调用格式如下:

● C=dot(A,B)。

● C=dot(A,B,dim)。

3-11数组的点积运算示例。

在命令行窗口中依次输入:

img

输出结果:

img

2.数组的关系运算

在MATLAB中提供了6种数组关系运算符,即<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(恒等于)、~=(不等于)。

关系运算的运算法则如下:

● 当两个比较量是标量时,直接比较两个数的大小。若关系成立,则返回的结果为1,否则为0。

● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。

3-12数组的关系运算示例。

在命令行窗口中依次输入:

img

输出结果:

img

3.数组的逻辑运算

在MATLAB中提供了3种数组逻辑运算符,即&(与)、|(或)和~(非)。逻辑运算的运算法则如下:

● 如果是非零元素则为真,用1表示;如果是零元素则为假,用0表示。

● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的逻辑运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。

● 在进行与运算(a&b)时,a、b全为非零,则为真,运算结果为1。在进行或运算(a|b)时,只要ab有一个为非零,则运算结果为1。在进行非运算(~a)时,若a为0,则运算结果为1;若a为非零,则运算结果为0。

3-13数组的逻辑运算示例。

在命令行窗口中依次输入:

img

输出结果:

img