MATLAB - 运算符
MATLAB - 运算符
Section titled “MATLAB - 运算符”运算符是一个符号,它指示编译器执行特定的数学或逻辑操作。MATLAB 的运算符设计旨在无缝地作用于标量(单个数字)和数组/矩阵,使其成为强大的数值计算工具。
MATLAB 的基本操作可分为以下几类:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算
- 集合操作
MATLAB 中的一个关键概念是矩阵算术与数组算术之间的区别。数组操作通过前导点(.)表示,并逐元素执行。
| 运算符 | 描述 |
|---|---|
| + | 加法。A + B。逐元素运算。 |
| - | 减法。A - B。逐元素运算。 |
| * | 矩阵乘法。遵循线性代数规则。A 的列数必须等于 B 的行数。 |
| .* | 数组(逐元素)乘法。A .* B。A 和 B 必须具有相同的维度,或者其中一个必须是标量。 |
| / | 矩阵右除。A / B 大致等同于 A * inv(B)。 |
| ./ | 数组(逐元素)右除。A ./ B。将 A 的每个元素除以 B 的对应元素。 |
| \ | 矩阵左除。A \ B 大致等同于 inv(A) * B。这是求解线性方程组 Ax = B 的推荐方法。 |
| .\ | 数组(逐元素)左除。A .\ B。将 B 的每个元素除以 A 的对应元素。 |
| ^ | 矩阵幂。A^p 计算 A 的 p 次幂。 |
| .^ | 数组(逐元素)幂。A .^ B。将 A 的每个元素提升到 B 中的对应幂。 |
| ‘ | 矩阵转置。A' 是线性代数转置。对于复数矩阵,它是复共轭转置。 |
| .’ | 数组转置。A.' 转置 A 而不进行复共轭。 |
示例:矩阵乘法与数组乘法
Section titled “示例:矩阵乘法与数组乘法”A = [1, 2; 3, 4];B = [5, 6; 7, 8];
% 矩阵乘法 (1*5 + 2*7 = 19)C_matrix = A * B
% 数组(逐元素)乘法 (1*5=5, 2*6=12, ...)C_array = A .* B输出:
C_matrix = 19 22 43 50
C_array = 5 12 21 32关系运算符逐元素比较数组,并返回一个相同大小的逻辑数组,其中每个元素为 1 (真) 或 0 (假)。
| 运算符 | 描述 |
|---|---|
| < | 小于 |
| <= | 小于或等于 |
| > | 大于 |
| >= | 大于或等于 |
| == | 等于 |
| ~= | 不等于 |
示例:关系运算
Section titled “示例:关系运算”A = [1, 5, 6];B = [2, 5, 3];
% 查找 A 大于 B 的元素L1 = A > B
% 查找 A 等于 B 的元素L2 = A == B输出:
L1 = 1x3 logical array
0 0 1
L2 = 1x3 logical array
0 1 0MATLAB 有两种类型的逻辑运算符:
- 逐元素 (
&,|,~):对逻辑数组的每个元素进行操作。 - 短路 (
&&,||):对标量逻辑表达式进行操作,并用于if和while等控制流语句中。它们仅在结果未完全由第一个操作数确定时才评估第二个操作数。
示例:逻辑运算
Section titled “示例:逻辑运算”% 逐元素 ANDA = [1, 0, 1]; % 使用 1 和 0 表示真和假B = [0, 0, 1];C = A & B % 返回一个逻辑数组
% if 语句中的短路 ANDx = 5;y = 10;if (x > 0) && (y > 5) disp('两个条件都为真。');end输出:
C = 1x3 logical array
0 0 1
Both conditions are true.位运算符对整数类型执行逐位操作。
| 函数 | 用途 |
|---|---|
| bitand(a, b) | 整数 a 和 b 的按位 AND |
| bitor(a, b) | 整数 a 和 b 的按位 OR |
| bitxor(a, b) | 整数 a 和 b 的按位 XOR |
| bitcmp(a) | a 的按位补码 |
| bitshift(a, k) | 位移。正 k 表示左移,负 k 表示右移。 |
示例:按位 AND
Section titled “示例:按位 AND”% A = 60 (二进制 00111100)% B = 13 (二进制 00001101)a = uint8(60);b = uint8(13);
% 结果应为 12 (二进制 00001100)result = bitand(a, b)输出:
result = 12MATLAB 提供了对向量执行集合操作的函数。
| 函数 | 描述 |
|---|---|
| union(A,B) | 集合并集;返回在 A 或 B 中的元素,已排序。 |
| intersect(A,B) | 集合交集;返回 A 和 B 共有的元素。 |
| setdiff(A,B) | 集合差集;返回在 A 中但不在 B 中的元素。 |
| setxor(A,B) | 集合异或;返回不在 A 和 B 交集中的元素。 |
| unique(A) | 返回 A 中的唯一元素。 |
| ismember(A,B) | 返回一个逻辑数组,指示 A 中的哪些元素也在 B 中。 |
示例:集合操作
Section titled “示例:集合操作”A = [1, 2, 3, 5];B = [2, 4, 5, 6];
% A 和 B 的并集C_union = union(A, B)
% A 和 B 的交集C_intersect = intersect(A, B)输出:
C_union = 1 2 3 4 5 6
C_intersect = 2 5