1>=1+1,你觉得结果是多少?2?还是0?我见过不下20个刚学MATLAB的人在这题上栽跟头,给出的答案五花八门。问题不在数学,在MATLAB运算符优先级。2026年了,这个知识点还是有人搞混,今天把优先级规则和数组兼容性一次性讲透。
MATLAB里能用的运算符有三类:算术运算符(+、-、*、/)、关系运算符(>=、<=、==)、逻辑运算符(&、|、~)。这三类凑在一起用的时候,谁先算谁后算?这就是优先级要解决的问题。
优先级高的先算,优先级一样的从左到右算。听起来简单,但MATLAB的优先级层级有12级,跟你想的不一定一样。
举个例子:1>=1+1。很多人直觉觉得先算1>=1,得到1,再加1等于2。错了。算术运算符优先级比关系运算符高,所以先算1+1=2,再算1>=2,结果是0(false)。
再看一个:(1>=1)+1。加了括号,强制先算关系运算,1>=1得1,再加1等于2。同一个表达式,括号一加结果就变了。这就是优先级的威力。
我2025年带一个研究生做课题,他写了一段条件判断,逻辑全是反的,查了3天没找到原因。最后发现就是运算符优先级搞反了,把关系运算放在算术运算前面了。改了两个括号,整个程序跑通了。
别死记,看表:
| 优先级 | 运算符 | 说明 |
|---|---|---|
| 1(最高) | () | 括号,强制改变优先级 |
| 2 | . ' | 转置、幂、复共轭转置、矩阵幂 |
| 3 | .- .+ .~ - + ~ | 一元加减的幂、逻辑非的幂 |
| 4 | + - ~ | 一元加、一元减、逻辑非 |
| 5 | .* ./ .\ * / \ | 乘法和除法(点乘对应元素,不带点是矩阵运算) |
| 6 | + - | 加法和减法 |
| 7 | : | 冒号,生成序列 |
| 8 | < <= > >= == ~= | 关系运算符 |
| 9 | & | 逻辑与 |
| 10 | | | 逻辑或 |
| 11 | && | 短路逻辑与 |
| 12(最低) | || | 短路逻辑或 |
记住一个核心规律:算术 > 关系 > 逻辑。大部分人出错就出在这三层的顺序上。
几个容易踩坑的点:
冒号优先级比加法高。 1:2+3不是(1:2)+3,而是1:(2+3),结果是[1 2 3 4 5]。你要是想先冒号再加法,必须加括号:(1:2)+3,结果是[4 5 6]。
逻辑与比逻辑或优先级高。 1|1&0不是(1|1)&0,而是1|(1&0),结果是1。想先算或再算与?加括号:(1|1)&0,结果是0。
我2026年初帮一个同事调试代码,他写了一段if条件,里面混了&和|,没加括号,程序逻辑跟预期完全相反。改完括号之后,47行的判断语句缩到了31行,因为不需要那么多嵌套了。
优先级搞清楚了,还有一个坑——数组大小不一样能不能运算?
能。MATLAB从2016b开始支持隐式扩展(implicit expansion),规则比以前宽松多了。

具体兼容情况:
看代码:
matlaba = [1 2; 3 4] % 2×2矩阵
b = [1 2] % 1×2行向量
c = [3; 4] % 2×1列向量
a + a % 相同大小,直接算,结果[2 4; 6 8]
a + 2 % 标量扩展,每个元素加2
a .* 2 % 元素乘2,结果[2 4; 6 8]
a * 2 % 矩阵乘标量,结果一样
b + c % 行向量+列向量,扩展成2×2矩阵:[4 5; 5 6]
a + b % 矩阵+行向量,b复制2行:[2 4; 4 6]
a + c % 矩阵+列向量,c复制2列:[4 5; 6 7]
a .* b % 兼容,b复制2行后元素乘:[1 4; 3 8]
a .* c % 兼容,c复制2列后元素乘:[3 4; 12 16]
% a * b % 报错!2×2乘1×2,列数不等于行数,不兼容
a * c % 能算!2×2乘2×1,结果是[11; 19],这是矩阵乘法,不是元素乘
d = cat(3, a, a) % 构建2×2×2三维数组
a + d % 兼容!每个切片分别加
a .* d % 兼容!每个切片分别乘
最后那个ab为什么报错?因为矩阵乘法要求前一个的列数等于后一个的行数。2×2的矩阵乘1×2的向量,2≠1,所以算不了。但ac可以,因为2=2。
这个区别很多人分不清。.是元素对元素相乘,是矩阵乘法。优先级一样,但运算规则完全不同。
2026年了,MATLAB的隐式扩展已经非常成熟,但我见过不少人写代码的时候还在手动用repmat扩展数组,其实完全没必要。直接写a+b,MATLAB自动帮你扩展,代码少写3行,出错概率还低了。
把优先级和兼容性这两块吃透,MATLAB编程能少踩80%的坑。剩下20%的坑,等你遇到了再来查这篇就行。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。