3.1 数组运算(2)
3.1.2 数组的常见运算
1.数组的算术运算
数组的运算是从数组的单个元素出发,针对每个元素进行的运算。在MATLAB中,一维数组的算术运算包括加、减、乘、左除、右除和乘方。
数组的加减运算:通过格式A+B或A-B可实现数组的加减运算。但是运算规则要求数组A和B的维数相同。
提示:如果两个数组的维数不相同,则将给出错误的信息。
例3-7:数组的加减运算示例。
在命令行窗口中依次输入:
clear all A = [1 5 6 8 9 6] B = [9 85 6 2 4 0] C = [1 1 1 1 1] D = A + B % 加法 E = A - B % 减法 F = A * 2 G = A + 3 % 数组与常数的加法 H = A - C
输出结果:
A = 1 5 6 8 9 6 B = 9 85 6 2 4 0 C = 1 1 1 1 1 D = 10 90 12 10 13 6 E = -8 -80 0 6 5 6 F = 2 10 12 16 18 12 G = 4 8 9 11 12 9 矩阵维度必须一致。
数组的乘除运算:通过格式“.*”或“./”可实现数组的乘除运算。但是运算规则要求数组A和B的维数相同。
乘法:数组A和B的维数相同,运算为数组对应元素相乘,计算结果与A和B是相同维数的数组。
除法:数组A和B的维数相同,运算为数组对应元素相除,计算结果与A和B是相同维数的数组。
右除和左除的关系:A./B=B.\A,其中A是被除数,B是除数。
提示:如果两个数组的维数不相同,则将给出错误的信息。
例3-8:数组的乘法运算示例。
在命令行窗口中依次输入:
clear all A = [1 5 6 8 9 6] B = [9 5 6 2 4 0] C = A .* B % 数组的点乘 D = A * 3 % 数组与常数的乘法
输出结果:
A = 1 5 6 8 9 6 B = 9 5 6 2 4 0 C = 9 25 36 16 36 0 D = 3 15 18 24 27 18
例3-9:数组的除法运算示例。
在命令行窗口中依次输入:
clear all A = [1 5 6 8 9 6] B = [9 5 6 2 4 0] C = A .\ B % 数组与数组的左除 D = A ./ B % 数组与数组的右除 E = A ./3 % 数组与常数的除法 F = A / 3
输出结果:
A = 1 5 6 8 9 6 B = 9 5 6 2 4 0 C = 9.0000 1.0000 1.0000 0.2500 0.4444 0 D = 0.1111 1.0000 1.0000 4.0000 2.2500 Inf E = 0.3333 1.6667 2.0000 2.6667 3.0000 2.0000 F = 0.3333 1.6667 2.0000 2.6667 3.0000 2.0000
通过乘方格式“.^”实现数组的乘方运算。数组的乘方运算包括数组间的乘方运算、数组与某个具体数值的乘方运算,以及常数与数组的乘方运算。
例3-10:数组的乘方运算示例。
在命令行窗口中依次输入:
clear all A = [1 5 6 8 9 6] B = [9 5 6 2 4 0] C = A .^ B % 数组的乘方 D = A .^ 3 % 数组与某个具体数值的乘方 E = 3 .^ A % 常数与数组的乘方
输出结果:
A = 1 5 6 8 9 6 B = 9 5 6 2 4 0 C = 1 3125 46656 64 6561 1 D = 1 125 216 512 729 216 E = 3 243 729 6561 19683 729
通过使用函数dot()可实现数组的点积运算,但是运算规则要求数组A和B的维数相同,其调用格式如下:
● C=dot(A,B)。
● C=dot(A,B,dim)。
例3-11:数组的点积运算示例。
在命令行窗口中依次输入:
clear all A = [1 5 6 8 9 6] B = [9 5 6 2 4 0] C = dot(A,B) % 数组的点积 D = sum(A .* B) % 数组元素的乘积之和
输出结果:
A = 1 5 6 8 9 6 B = 9 5 6 2 4 0 C = 122 D = 122
2.数组的关系运算
在MATLAB中提供了6种数组关系运算符,即<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(恒等于)、~=(不等于)。
关系运算的运算法则如下:
● 当两个比较量是标量时,直接比较两个数的大小。若关系成立,则返回的结果为1,否则为0。
● 当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。
例3-12:数组的关系运算示例。
在命令行窗口中依次输入:
clear all A = [1 5 6 8 9 6] B = [9 5 6 2 4 0] C = A < 6 % 数组与常数比较,小于 D = A >= 6 % 数组与常数比较,大于或等于 E = A < B % 数组与数组比较,小于 F = A == B % 数组与数组比较,恒等于
输出结果:
A = 1 5 6 8 9 6 B = 9 5 6 2 4 0 C = 1×6 logical 数组 1 1 0 0 0 0 D = 1×6 logical 数组 0 0 1 1 1 1 E = 1×6 logical 数组 1 0 0 0 0 0 F = 1×6 logical 数组 0 1 1 0 0 0
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:数组的逻辑运算示例。
在命令行窗口中依次输入:
clear all A = [1 5 6 8 9 6] B = [9 5 6 2 4 0] C = A & B % 与运算 D = A | B % 或运算 E = ~B % 非运算
输出结果:
A = 1 5 6 8 9 6 B = 9 5 6 2 4 0 C = 1×6 logical 数组 1 1 1 1 1 0 D = 1×6 logical 数组 1 1 1 1 1 1 E = 1×6 logical 数组 0 0 0 0 0 1