1.先看一个问题
在Matlab中编程计算:1>=1+1
结果是什么,2吗?还是0?
2.概念
在Matlab中,可以任意组合使用算术运算符、关系运算符和逻辑运算符等形成的表达式进行运算,Matlab进行运算处理的顺序取决于每个运算符的优先级;
Matlab中运算符的优先级是指,当多种运算符组合使用时,优先运算的顺序,运算符优先级越高,将优先运算;
如果多个运算符具有相同的优先级(例如加法和减法),那么按照表达式从左到右进行运算处理;
3.优先级顺序
Matlab运算符的优先级规则,从高到低排序如下:
1) 括号 ()
2) 转置 (.'), 幂(.^), 复共轭转置 ('), 矩阵的幂(^)
3) 一元减的幂(.^-),一元加的幂(.^+),逻辑非的幂(.^~) 一元减的矩阵的幂(^-), 一元加的矩阵的幂(^+),逻辑非的矩阵的幂 (^~).
4) 一元加(+),一元减(-),逻辑非(~)
5) 乘法(.*),右除(./),左除(.\),矩阵的乘法(*),矩阵的右除(/),矩阵的左除 (\)
6) 加法 (+), 减法(-)
7) 冒号(:)
8) 关系运算符(<),(<=),(>), (>=), (==), (~=)
9) 逻辑与(&)
10) 逻辑或(|)
11) 短路逻辑与(&&)
12) 短路逻辑或 (||)
4.程序示例
1>=1+1 %四则运算高于逻辑运算
(1>=1)+1
1:2+3 %加法高于冒号
(1:2)+3
1|1&0 %与优先于或
(1|1)&0
5.基本运算中数组大小的兼容性
这里兼容性是指,两个大小不同的数组是否能够进行运算,这里的兼容性运算主要指数组的四则运算;
我们知道,两个完全相同大小的数组可以运算;若运算数其中之一是标量的两个大小不同的数组可以运算;若一个是行向量,一个是列向量,可以运算;若一个是矩阵,一个是具有相同行数的列向量,可以运算;若一个是矩阵,一个是具有相同列数的行向量,可以运算;若一个是矩阵,一个是具有相同行数和列数的三维数组,可以运算;
说明,以上是针对2016以及更高版本的情况;
6.程序示例
a=[1 2;3 4]
b=[1 2]
c=[3;4]
a+a
a+2 %矩阵与标量运算:将标量扩展为前面矩阵的兼容性大小,再遵循数组四则运算
a.*2
a*2
b+c %先扩展为兼容性大小:b复制行、c复制列再运算
a+b
a+c
a.*b
a.*c
% a*b %无法进行兼容性运算
a*c %并非兼容性运算,而是前面行等于后面列
d=cat(3,a,a) %构建三维数组
a+d %不同维度的数组也可兼容性运算
a.*d %可兼容性运算
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删