写MATLAB代码时,经常被运算符搞懵?AB和A.B到底啥区别?&&和&又差在哪?别急,搞懂这三类运算符,你写代码的速度能翻倍。
MATLAB运算符主要分三类:算术运算符、关系运算符、逻辑运算符。下面一个个拆开讲,配上实操例子,看完就能用。
这是新手最容易翻车的地方。MATLAB里的算术运算符有两套——一套按线性代数的规则(矩阵运算),另一套按对应元素逐个算(数组运算)。区别就在那个点号。
矩阵运算(无点号)
数组运算(带点号)
一个踩坑案例 有次做图像处理,要对矩阵每个元素平方,我写了 A^2。运行报错——A不是方阵。正确写法是 A.^2。记住:对矩阵里每个元素单独操作,前面一定要加点。
实操小技巧 用冒号 : 创建数组特别方便:1:2:10 生成 [1 3 5 7 9]。想快速生成全1矩阵?ones(3,4) 就行。这些看似简单,但80%的初学者第一周都会忘。

关系运算符用来比较两个数(或两个同维数组的对应元素)。结果永远是一个逻辑数组——成立为1,不成立为0。
| 运算符 | 含义 |
|---|---|
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
== | 等于(注意是双等号) |
~= | 不等于 |
举个栗子
A = [1 2 3; 4 5 6; 7 8 9];B = [11 12 13; 14 15 16; 17 18 19];C = A == BC会是一个3x3的全0矩阵,因为A和B每个位置的数都不相等。
实用场景 筛选数组中大于某个阈值的元素:
data = [5 12 3 8 15];indices = data > 10; % 得到 [0 1 0 0 1]result = data(indices) % 提取 [12 15]这段代码在你做数据清洗、异常值剔除时,天天会用。
MATLAB的逻辑运算符分两种:一般逻辑运算(元素级)和捷径运算(标量级)。
一般逻辑运算符
这些运算符对数组逐元素操作,返回同维度的逻辑数组。
捷径运算符(推荐用)
区别在哪?&&和||只对标量用,而且会“偷懒”——左边表达式能决定结果时,右边就不算了。
一个救命例子
x = 0;% 普通逻辑运算:第二个表达式会被计算,会报错(除以0)y = (x ~= 0) & (a/x > 10); % 报错!% 捷径运算:左边x~=0为假,直接返回0,不计算右边z = (x ~= 0) && (a/x > 10); % 安全通过,z=0写条件判断时,一定用&&和||,既能避免运行时错误,效率也更高。

搞不清优先级,算出来的结果跟你脑子里想的不一样。MATLAB的优先级规则:
最高:括号 ( ) 你写 (a+b)*c 和 a+b*c 完全两个意思。不确定的时候,多加括号不丢人。
第二:算术运算符 先乘除、后加减,幂运算优先级最高。
第三:关系运算符 <、>、== 这些,比算术运算低,但比逻辑运算高。
第四:逻辑运算符 ~ 最高,然后是 &,最后是 |。
一个真实bug 有次想判断 a 大于 5 且 b 小于 10,我写了:
if a > 5 & b < 10结果一直不对。查了半天,原来关系运算符优先级低于算术运算,但这里没问题啊?后来发现是漏了括号。实际上 a > 5 & b < 10 等价于 (a > 5) & (b < 10),没问题。真正出问题的是写了 a > 5 & b < 10 & c == 3,不加括号也ok。但为了代码可读性,我建议你写成:
if (a > 5) && (b < 10)加上括号,人不容易错。
还有一些特殊符号,写代码天天碰:
续行符用的一个场景 写一个超长公式:
y = a + b + c + d + ... e + f + g + h;注意 ... 前面要有空格,后面直接换行。
最后总结一下 MATLAB运算符分算术、关系、逻辑三大类。算术里区分带点号和不带点号——点号表示逐元素操作,不带点号按矩阵规则。关系运算结果永远是0和1。逻辑运算推荐用 && 和 || 捷径版,效率高还安全。优先级:括号 > 算术 > 关系 > 逻辑。把这些记熟了,2026年写MATLAB代码至少快一倍。下次再报错,先检查是不是把 .^ 写成了 ^。
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。