2.3 运算符和特殊符号
MATLAB R2012a超级学习手册
MATLAB中提供了丰富的运算符,满足各种应用。这些运算符包括算数运算符、关系运算符和逻辑运算符3种运算符。
2.3.1 算数运算符
当A和B都是标量时,表示标量A的B次方幂。当A为方阵,B为正整数时,表示矩阵A的B次乘积。B为负整数时,表示矩阵A的逆的B次乘积。当B为非整数时,有如下表达式。
其中{A^{{\lambda _1}}}、L、{A^{{\lambda _n}}}为方阵B的特征值,V为对应的特征向量矩阵。当矩阵A和矩阵B都为矩阵时,此运算无定义。
除了某些矩阵运算符,MATLAB的算数运算符只对相同规模的数组作相应的运算。对于向量和矩阵,两个操作数必须同规模或者有一个操作数为标量。
如果一个操作数是标量,而另外一个不是,MATLAB会将这个标量与另一个操作数的每一个元素进行运算。
例如,输入如下代码。
>>A=magic(4)
上述语句得到矩阵如下。
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
输入如下命令。
>>5*A
上述语句得到结果如下。
ans =
80 10 15 65
25 55 50 40
45 35 30 60
20 70 75 5
MATLAB的数学运算符不但支持双精度数据类型的运算,还增加了对单精度类型、1字节无符号整数、1字节有符号整数、2字节无符号整数、2字节有符号整数、4字节无符号整数和4字节有符号整数运算的支持。
2.3.2 关系运算符
MATLAB的关系运算符的用法和功能如表2-13所示。
MATLAB的关系运算符只对具有相同规模的两个操作数或者其中一个操作数为标量的操作数进行操作。
当两个操作数具有相同规模时,MATLAB对两个矩阵的对应元素进行比较,返回的结果是与操作数具有相同规模的矩阵。例如,下面的示例代码比较4×4魔方矩阵中哪些元素的值大于10,代码如下。
>>magic(4)>10*ones(4)
上述语句得到结果如下。
ans =
1 0 0 1
0 1 0 0
0 0 0 1
0 1 1 0
返回结果中等于1的位置上,表示此处magic(4)的矩阵元素大于10。
2.3.3 逻辑运算符
MATLAB提供3种类型的逻辑运算符,即元素方式逻辑运算符、比特方式逻辑运算符和短路逻辑运算符。
元素方式逻辑运算符的用法和功能如表2-14所示。元素方式逻辑运算符只接受逻辑类型变量输入。表中例子采用如下矩阵。
>>A = [1 0 0 0 1];
>>B = [0 0 1 1 1];
MATLAB的元素方式逻辑运算符只对具有相同规模的两个操作数或者其中一个操作数为标量的操作数进行操作。
元素方式逻辑运算符有重载的函数,实际上符号&、|和~的重载函数分别是and()、or()和not()。
比特方式逻辑运算符对操作数的每一个比特位进行逻辑操作,其用法和功能如表2-15所示。比特方式逻辑运算符接受逻辑类型和非负整数变量输入。表中例子采用如下矩阵。
>>A=17;%binary 10001
>>B=7;%binary 00111
MATLAB的短路逻辑操作符用法和功能如表2-16所示。
说明:
短路逻辑运算符的运算结果和元素方式逻辑运算符的运算结果是一样的。然而,短路逻辑运算符在执行时,只有在运算结果还不确定时才去参考第二个操作数。
例如A&&B操作,当A为0时,直接返回0,而不检查B的值;当A为1时,如果B为1,则返回1,否则返回0。A||B的执行方式也与A&&B类似。
2.3.4 运算优先级
表达式包括算术运算符、关系运算符和逻辑运算符,因此运算符的优先级决定了对一个表达式的求值顺序。
具有相同优先级的运算符则从左到右依次进行运算,不同优先级的运算符则先进行高优先级运算。运算符的优先等级如表2-17所示。
由表2-17中可以看到,括号的优先级别最高,因此可以用括号来改变默认的优先等级,例如下面的示例代码。
>>A = [2 6 8];
>>B = [1 3 6];
>>C = A.*B.^3
上述语句得到结果如下。
C =
2 162 1728
而采用括号后的代码语句如下。
>>C=(A.*B).^3
上述语句得到结果如下。
C =
8 5832 110592