- MATLAB R2020a完全自学一本通
- 刘浩
- 1934字
- 2020-11-21 19:24:27
3.1 数组运算
数组运算是MATLAB计算的基础。由于MATLAB面向对象的特性,这种数值数组成为MATLAB最重要的一种内建数据类型,而数组运算就是定义这种数据结构的方法。本节将系统地列出具备数组运算能力的函数名称,为兼顾一般性,以二维数组的运算为例,读者可推广至多维数组和多维矩阵的运算。
下面介绍在MATLAB中如何创建数组,以及数组的常用操作等,包括数组的算术运算、关系运算和逻辑运算。
3.1.1 数组的创建和操作
在MATLAB中一般使用方括号“[ ]”、逗号“,”、空格和分号“;”来创建数组,数组中同一行的元素使用逗号或空格进行分隔,不同行之间用分号进行分隔。
例3-1:创建空数组、行向量、列向量示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_2.jpg?sign=1739192766-PHKggn77rDagVi8YURXkrRapDXFPtVZK-0-3db71706bb08d8b64e1368af72ab59d7)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_3.jpg?sign=1739192766-QFRnSU4XJxYAdqN09uxaztTjFKSoplbw-0-0cde627fd7c81f21aaeab0368c5f609e)
例3-2:访问数组示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_4.jpg?sign=1739192766-Tv3K0fYFS2JgMqfUBRR9pAytepE2NSP4-0-e8a63cf4e978c994f1eb4ff7b46cddeb)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_5.jpg?sign=1739192766-L6iN7sqvBsFB4tiWIzIwjkUL31GJKlmn-0-7856e431ffe2f3ffe926f083f522931a)
例3-3:子数组的赋值示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_6.jpg?sign=1739192766-Vf01eW4LmoVOpB7J39xaaW714yJXZYov-0-dff228085fb3e519e6d013ee9a892d53)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_7.jpg?sign=1739192766-U8PCgy5XRo64uxn3dep3e57B5WfkuCuO-0-ddbc2bf245062ec3322f63678edf2345)
在MATLAB中还可以通过其他各种方式创建数组,具体如下所示。
1.通过冒号创建一维数组
在MATLAB中,通过冒号创建一维数组的代码如下:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_8.jpg?sign=1739192766-jkEYI9rNkXMDasuUK0mnHxG1ww0FQL55-0-fbbdf100db5c6ceb4f891325960b3e4b)
其中,A是创建一维数组的第一个变量,step是每次递增或递减的数值,直到最后一个元素和B的差的绝对值小于或等于step的绝对值为止。
例3-4:通过冒号创建一维数组示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_9.jpg?sign=1739192766-FgbLuueKKiynba3mToGzQBelD0Ifx9PO-0-59d9d67fb09a7f5655858f0f3da1190a)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_10.jpg?sign=1739192766-pp3JRBaW482LfoUMcJxcNmhxEn0P0B34-0-2d5d6a419805726191c8695958e009f7)
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](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_11.jpg?sign=1739192766-Qhk1OIMhRsTqGVVj8L0X8DJM7eG91gWE-0-a6d2e8e6f0d44e33af9a1be014aa86d0)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_12.jpg?sign=1739192766-lmIX2bdzTArtGFw94xr9fyP2iHp7LbAn-0-58c3d00a22826f481c39dc907e47c616)
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](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_13.jpg?sign=1739192766-pZq5nh64hIyqYaTwkqR6Po3LhVj1Ak7d-0-17b13592e1c756768ec93b39b1d20ca4)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_14.jpg?sign=1739192766-7vBG9Vu3Rvit1zqSOFuj3pNmnUCnjgwY-0-5f46801a85855af5b029bc64e6c38fd1)
3.1.2 数组的常见运算
1.数组的算术运算
数组的运算是从数组的单个元素出发,针对每个元素进行的运算。在MATLAB中,一维数组的算术运算包括加、减、乘、左除、右除和乘方。
数组的加减运算:通过格式A+B或A-B可实现数组的加减运算。但是运算规则要求数组A和B的维数相同。
○提示
如果两个数组的维数不相同,则将给出错误的信息。
例3-7:数组的加减运算示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_15.jpg?sign=1739192766-MYvl5f2seG1pdyq5hAFH1GwIOj1XUvad-0-488ac06c61b86f2efc38ece432a78de7)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_16.jpg?sign=1739192766-uoO87pgioh2AhTAcohMaLYLAHV5jzRco-0-6b622ca2fef0fbf40e24e329c002aa35)
数组的乘除运算:通过格式“.*”或“./”可实现数组的乘除运算。但是运算规则要求数组A和B的维数相同。
乘法:数组A和B的维数相同,运算为数组对应元素相乘,计算结果与A和B是相同维数的数组。
除法:数组A和B的维数相同,运算为数组对应元素相除,计算结果与A和B是相同维数的数组。
右除和左除的关系:A./B=B.\A,其中A是被除数,B是除数。
○提示
如果两个数组的维数不相同,则将给出错误的信息。
例3-8:数组的乘法运算示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_17.jpg?sign=1739192766-q4CAtIyNLAqN5KQldUrtvccDZYQSlMbx-0-9eee081882541c049d8a957c244d5cd3)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_18.jpg?sign=1739192766-VVu6uMAlFAHxkPdOflL1GwgnXNwXzQoy-0-0456d976338065b5ff3fc2e73bca3be2)
例3-9:数组的除法运算示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_19.jpg?sign=1739192766-QD2iX0ZdaKiuak5YcVSbC9M6Fdw4hIwW-0-f5d1b3d9d69a4a26d8a957b82819accc)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_20.jpg?sign=1739192766-fRign1EfAnBLtDLtPLL7wXC7FBsHRwsI-0-1174722231dd3c8875b712e8f56011df)
通过乘方格式“.^”实现数组的乘方运算。数组的乘方运算包括数组间的乘方运算、数组与某个具体数值的乘方运算,以及常数与数组的乘方运算。
例3-10:数组的乘方运算示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_21.jpg?sign=1739192766-HLaSS7FzaiSe7K3mj0MnI4KIxXCcDHPF-0-bc55887019a023e78e3db379bd4bf859)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_22.jpg?sign=1739192766-7nXmsmqWLlFO8S1RRAtDDcxRMzEV45w0-0-51a963d91b850313c32940dde3b1a78b)
通过使用函数dot()可实现数组的点积运算,但是运算规则要求数组A和B的维数相同,其调用格式如下:
● C=dot(A,B)。
● C=dot(A,B,dim)。
例3-11:数组的点积运算示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_23.jpg?sign=1739192766-0M48IH4yxweubIerPGzxYvoS4ELtf4ud-0-125300dafdda3d78287afed5ce4c5ad3)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_24.jpg?sign=1739192766-OTG4mHSM5wGaM8aiuEdGJM8xg6oaJWL4-0-8df383a8ea6c66324528055719abef91)
2.数组的关系运算
在MATLAB中提供了6种数组关系运算符,即<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(恒等于)、~=(不等于)。
关系运算的运算法则如下:
● 当两个比较量是标量时,直接比较两个数的大小。若关系成立,则返回的结果为1,否则为0。
● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。
例3-12:数组的关系运算示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_25.jpg?sign=1739192766-9Y49xQcraZxETqM1rexkQxT2ngWcWjFD-0-ac500390696399fb8767ff7418a28eb0)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_26.jpg?sign=1739192766-1em1m3cAyywQgljYkr14GUrjUtpTUl5A-0-6105408bbddeef3cc6b3ffcce42412f6)
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:数组的逻辑运算示例。
在命令行窗口中依次输入:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_27.jpg?sign=1739192766-wLHJOi0h5jYnDEjOtPqCrW44oqL7YXGT-0-734c2ab5e3dd2e141cd1993dca510f5e)
输出结果:
![img](https://epubservercos.yuewen.com/C258E9/18519308401625406/epubprivate/OEBPS/Images/txt005_28.jpg?sign=1739192766-1Pq020qhN464rQBCF3imIbq5BUBnDqvQ-0-cb9756c358a465018df98bb3360ddd43)