MATLAB 基本运算符详解¶
MATLAB 提供了丰富多样的运算符,用于执行算术计算、关系比较和逻辑判断。这些运算符是 MATLAB 编程语言的基础,并被深度优化以支持其核心的数组和矩阵计算。
核心概念:逐元素运算 (Element-wise) vs. 矩阵运算 (Matrix)
理解并区分这两种运算模式是高效使用 MATLAB 的关键。
* 逐元素运算: 使用带点 (.) 的运算符(如 .*, .^),对两个同样大小的数组中位置对应的元素独立执行运算。这是数据处理和分析中最常见的模式。
* 矩阵运算: 使用不带点的运算符(如 *, ^),遵循线性代数的运算法则,将数组作为一个整体进行数学变换。
算术运算符 (Arithmetic Operators)¶
逐元素算术运算 (Element-wise Operations)¶
这些运算要求参与的数组尺寸相同,或者其中一个是标量。
-
+(加法)- 描述: 逐元素相加。
- 示例:
-
-(减法)- 描述: 逐元素相减。
- 示例:
-
.*(逐元素乘法)- 描述: 将两个数组中对应位置的元素相乘,也称为哈达玛积 (Hadamard product)。
- 示例:
-
./(逐元素右除)- 描述: 将
A的每个元素除以B中对应位置的元素。 - 示例:
- 描述: 将
-
.\(逐元素左除)- 描述: 将
B的每个元素除以A中对应位置的元素。 - 示例:
- 描述: 将
-
.^(逐元素求幂)- 描述: 将
A中每个元素作为底数,B中对应位置的元素或一个标量作为指数。 - 示例:
- 描述: 将
矩阵算术运算 (Matrix Operations)¶
-
*(矩阵乘法)- 描述: 执行标准的矩阵乘法。要求第一个矩阵 A 的列数必须等于第二个矩阵 B 的行数。
- 示例:
-
\(矩阵左除)- 描述: 主要用于求解线性方程组 \(Ax = b\),这是数值上最稳定、最高效的方法。
- 示例:
-
/(矩阵右除)- 描述: 主要用于求解线性方程组 \(xA = b\)。
- 示例:
-
^(矩阵求幂)- 描述:
A^n表示矩阵 A 与自身进行 n-1 次矩阵乘法。要求 A 必须是方阵。 - 示例:
- 描述:
关系运算符 (Relational Operators)¶
关系运算符用于逐元素比较,返回一个逻辑数组。
==(等于),~=(不等于),>(大于),<(小于),>=(大于或等于),<=(小于或等于)- 示例:
逻辑运算符 (Logical Operators)¶
逐元素逻辑运算¶
&(逻辑与),|(逻辑或),~(逻辑非),xor(逻辑异或)- 示例:
短路逻辑运算 (Short-Circuit)¶
&&(短路与),||(短路或)- 描述: 仅作用于标量逻辑值。一旦结果确定,就停止计算后续部分,常用于
if语句中避免错误。 - 示例:
字符与字符串运算符 (Character and String Operators)¶
MATLAB 为处理文本提供了专门的运算符,特别是针对现代的 string 数组。
文本串联 (Concatenation)¶
-
+(字符串串联)- 描述: 加号
+被重载用于string数组,是串联字符串的首选方法。 - 示例:
- 描述: 加号
-
[](字符数组水平串联)- 描述: 方括号
[]用于串联传统的char数组(字符向量)。 - 示例:
- 描述: 方括号
-
[](字符数组垂直串联)- 描述: 垂直串联
char数组时,各数组的长度(列数)必须完全相同。 - 示例:
- 描述: 垂直串联
关系与比较 (Relational and Comparison)¶
-
==(字符串/字符数组相等性比较)- 描述:
==可直接比较string数组。对于char数组,传统上更推荐使用strcmp函数。 - 示例 (string):
- 描述:
-
>,<,>=,<=(字符串字典序比较)- 描述: 这些运算符对
string数组执行逐元素的字典序(lexicographical)比较。 - 示例:
- 描述: 这些运算符对
运算符优先级 (Operator Precedence)¶
- 描述: MATLAB 遵循标准的运算符优先级规则。括号
()拥有最高优先级,可用于强制改变运算顺序。 - 示例:
其他重要运算符¶
: (冒号运算符)¶
-
创建序列
- 示例:
-
索引(“全选”)
- 示例:
-
重塑为列向量
- 示例:
' (共轭转置) 和 .' (非共轭转置)¶
-
.'(非共轭转置)- 描述: 总是执行单纯的转置(交换行列),即使对于复数矩阵。
- 示例:
-
'(共轭转置)- 描述: 对于复数矩阵,它会交换行列并对每个元素取复共轭。
- 示例:
@ (函数句柄)¶
- 描述: 创建指向一个函数的引用,常用于将函数作为参数传递。
- 示例:
. (点)¶
- 描述: 访问结构体 (struct) 的字段或对象 (object) 的属性和方法。
- 示例: