首页 > 编程笔记 > MATLAB笔记 阅读:57

MATLAB运算符大全(含优先级)

MATLAB 运算符可分为三大类,即算术运算符、关系运算符和逻辑运算符。

MATLAB算术运算符

算术运算按所处理的对象不同,分为矩阵算术运算和数组算术运算两类。

矩阵算术运算符如下表所示:


表 1 矩阵算术运算符
运算符 名称 示例 使用说明(法则) 对应函数
+ C = A + B 矩阵加法法则,即 C(i,j) = A(i,j) + B(i,j) plus
- C = A - B 矩阵减法法则,即 C(i,j) = A(i,j) - B(i,j) minus
* C = A * B 矩阵乘法法则 mtimes
/ 右除 C = A / B 定义为矩阵右乘 B\*A 的解,即 C = A * B^-1 mrdivide
\ 左除 C = A \ B 定义为矩阵左乘 A\*B 的解,即 C = A^-1 * B mldivide
.^ 元素乘方 C = A .^ B 每个元素做幂运算 power
' 共轭转置 B = A' A 的共轭转置矩阵 ctranspose

数组算术运算符如下表所示:

表 2 数组算术运算符
运算符 名称 示例 使用说明(法则) 对应函数
.* 数组乘法 C = A .* B 逐元素乘法 times
./ 数组右除 C = A ./ B 逐元素右除 rdivide
.\ 数组左除 C = A .\ B 逐元素左除 ldivide
.^ 数组乘方 C = A .^ B 逐元素幂运算 power
' 数组转置 C = A' 逐元素的转置 transpose

说明:

MATLAB关系运算符

在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。

MATLAB关系运算符如下表所示:

表 3 MATLAB关系运算符
运算符 名称 示例 使用说明(法则)
< 小于 A<B 1. A、B 都是标量,结果是或为 1(真)或为 0(假)的标量
2. A、B 中若一个为标量,另一个为数组,则标量将与数组各元素逐一比较,结果为与运算数维行、列数相同的数组,其中各元素取值或为 1 或为 0
3. A、B 均为数组时,行、列数必须分别相同。A 与 B 各对应元素相比较,结果为与 A 或 B 行、列数相同的数组,其中各元素取值或为 1 或为 0
4. == 和 ~= 运算对参与比较的量同时比较实部和虚部,其他运算只比较实部
<= 小于或等于 A<=B
> 大于 A>B
>= 大于或等于 A>=B
== 恒等于 A==B
~= 不等于 A~=B

关系运算定义在数组基础之上更合适。因为从运算法则不难发现,关系运算是元素一对一的运算。

当操作数是数组时,关系运算符总是对被比较的两个数组的各个对应元素进行比较,因此要求被比较的数组必须具有相同的尺寸。

【实例】 MATLAB 中的关系运算。在命令行窗口中输入以下语句,并查看输出结果。
>> 5>=4
ans =
  logical
   1
>> x = rand(1,4)               % 生成一个 1×4 的随机数向量 x
x =
    0.0975    0.2785    0.5469    0.9575
>> y = rand(1,4)               % 生成另一个 1×4 的随机数向量 y
y =
    0.9649    0.1576    0.9706    0.9572
>> x > y                        % 比较 x 和 y 中对应元素的大小
ans =
  1x4 logical array
    0   1   0   1
提示:

MATLAB逻辑运算符

关系运算返回的结果是逻辑类型数据(逻辑真或逻辑假),这些简单的逻辑类型数据可以通过逻辑运算符组成复杂的逻辑表达式,这在程序设计中经常用于进行分支选择或者确定循环终止条件。

逻辑运算符如下表所示:

运算符 名称 示例 使用说明(法则)
& A&B 1. A、B 都是标量,结果是或为 1(真)或为 0(假)的标量
2. A、B 中若一个为标量,另一个为数组,则标量将与数组各元素逐一做逻辑运算,结果为与运算数组行、列数相同的数组,其中各元素取值为 1 或为 0
3. A、B 均为数组时,行、列数必须分别相同,A 与 B 各对应元素做逻辑运算,结果为与 A 或 B 行、列数相同的数组,其中各元素取值为 1 或为 0
4. 先决与、先决或是仅针对标量的运算
| A|B
~ ~A
&& 先决与 A&&B
|| 先决或 A||B

MATLAB 的逻辑运算定义在数组的基础之上,向下可兼容一般高级语言中所定义的标量逻辑运算。为提高运算速度,MATLAB 还定义了针对标量的先决与和先决或运算。

先决与运算在该运算符的左边为 1(真)时,才继续与该符号右边的量做逻辑运算。先决或运算在运算符的左边为 1(真)时,就不需要继续与该符号右边的量做逻辑运算,而立即得出该逻辑运算结果为1(真);否则,就要继续与该符号右边的量做逻辑运算。

提示,这里逻辑与和逻辑非运算,都是逐元素进行双目运算的,因此如果参与运算的是数组,就要求两个数组具有相同的尺寸。

【实例】逐元素逻辑运算应用示例。在命令行窗口中输入以下语句,并查看输出结果。
>> x = rand(1,3)           % 生成一个 1×3 的随机数向量 x
x =
    0.4854    0.8003    0.1419
>> y = x > 0.5             % 判断 x 中哪些元素大于 0.5
y =
  1x3 logical array
    0   1   0
>> m = x < 0.96            % 判断 x 中哪些元素小于 0.96
m =
  1x3 logical array
    1   1   1
>> y & m                   % 逻辑与操作,返回 y 和 m 的对应元素都为 1 的元素
ans =
  1x3 logical array
    0   1   0
>> y | m                   % 逻辑或操作,返回 y 或 m 的对应元素中至少一个为 1 的元素
ans =
  1x3 logical array
    1   1   1
>> ~y                      % 逻辑非操作,返回 y 的反值
ans =
  1x3 logical array
    1   0   1

MATLAB运算符优先级

当用多个运算符和运算量写出一个 MATLAB 表达式时,运算符的优先次序必须明确。下表列出了 MATLAB 运算符的优先次序。

表:MATLAB 运算符的优先次序
优先顺序 运算符
最高 ' (转置共轭)、^ (矩阵乘方)、~ (逻辑非)、' (转置)、.^ (数组乘方)
.* (数组乘)、 ./ (数组右除)、 .\(数组左除)
+、-、: (冒号运算)
<、<=、>、>=、== (恒等于)、~= (不等于)
& (逻辑与)
| (逻辑或)
&& (先决与)
最低 || (先决或)

表中同一行的各运算符具有相同的优先级,而在同一优先级别中又遵循有括号先括号运算的原则。

在实际的表达式书写中,建议采用括号分隔的方式明确各步运算的次序,以减少优先级的混乱。比如,x./y.^a 最好写成 x./(y.^a)。

相关文章