- Matlab 教程
- MATLAB - 首页
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 环境设置
- MATLAB - 编辑器
- MATLAB - 在线
- MATLAB - 工作区
- MATLAB - 语法
- MATLAB - 变量
- MATLAB - 命令
- MATLAB - 数据类型
- MATLAB - 运算符
- MATLAB - 日期和时间
- MATLAB - 数字
- MATLAB - 随机数
- MATLAB - 字符串和字符
- MATLAB - 文本格式化
- MATLAB - 时间表
- MATLAB - M 文件
- MATLAB - 冒号表示法
- MATLAB - 数据导入
- MATLAB - 数据输出
- MATLAB - 数据归一化
- MATLAB - 预定义变量
- MATLAB - 决策
- MATLAB - 决策
- MATLAB - If End 语句
- MATLAB - If Else 语句
- MATLAB - If…Elseif Else 语句
- MATLAB - 嵌套 If 语句
- MATLAB - Switch 语句
- MATLAB - 嵌套 Switch
- MATLAB - 循环
- MATLAB - 循环
- MATLAB - For 循环
- MATLAB - While 循环
- MATLAB - 嵌套循环
- MATLAB - Break 语句
- MATLAB - Continue 语句
- MATLAB - End 语句
- MATLAB - 数组
- MATLAB - 数组
- MATLAB - 向量
- MATLAB - 转置运算符
- MATLAB - 数组索引
- MATLAB - 多维数组
- MATLAB - 兼容数组
- MATLAB - 分类数组
- MATLAB - 元胞数组
- MATLAB - 矩阵
- MATLAB - 稀疏矩阵
- MATLAB - 表格
- MATLAB - 结构体
- MATLAB - 数组乘法
- MATLAB - 数组除法
- MATLAB - 数组函数
- MATLAB - 函数
- MATLAB - 函数
- MATLAB - 函数参数
- MATLAB - 匿名函数
- MATLAB - 嵌套函数
- MATLAB - 返回语句
- MATLAB - 空函数
- MATLAB - 局部函数
- MATLAB - 全局变量
- MATLAB - 函数句柄
- MATLAB - 滤波器函数
- MATLAB - 阶乘
- MATLAB - 私有函数
- MATLAB - 子函数
- MATLAB - 递归函数
- MATLAB - 函数优先级顺序
- MATLAB - 映射函数
- MATLAB - 平均值函数
- MATLAB - 结束函数
- MATLAB - 错误处理
- MATLAB - 错误处理
- MATLAB - Try...Catch 语句
- MATLAB - 调试
- MATLAB - 绘图
- MATLAB - 绘图
- MATLAB - 绘制数组
- MATLAB - 绘制向量
- MATLAB - 条形图
- MATLAB - 直方图
- MATLAB - 图形
- MATLAB - 2D 线性图
- MATLAB - 3D 图形
- MATLAB - 格式化图形
- MATLAB - 对数坐标轴图形
- MATLAB - 绘制误差条
- MATLAB - 绘制 3D 等值线
- MATLAB - 极坐标图
- MATLAB - 散点图
- MATLAB - 绘制表达式或函数
- MATLAB - 绘制矩形
- MATLAB - 绘制频谱图
- MATLAB - 绘制网格曲面
- MATLAB - 绘制正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 线性插值
- MATLAB - 2D 数组插值
- MATLAB - 3D 数组插值
- MATLAB - 多项式
- MATLAB - 多项式
- MATLAB - 多项式加法
- MATLAB - 多项式乘法
- MATLAB - 多项式除法
- MATLAB - 多项式的导数
- MATLAB - 变换
- MATLAB - 变换
- MATLAB - 拉普拉斯变换
- MATLAB - 拉普拉斯算子滤波器
- MATLAB - 高斯-拉普拉斯滤波器
- MATLAB - 逆傅里叶变换
- MATLAB - 傅里叶变换
- MATLAB - 快速傅里叶变换
- MATLAB - 2D 逆余弦变换
- MATLAB - 在坐标轴上添加图例
- MATLAB - 面向对象
- MATLAB - 面向对象编程
- MATLAB - 类和对象
- MATLAB - 函数重载
- MATLAB - 运算符重载
- MATLAB - 用户定义类
- MATLAB - 复制对象
- MATLAB - 代数
- MATLAB - 线性代数
- MATLAB - 高斯消元法
- MATLAB - 高斯-约旦消元法
- MATLAB - 简化行阶梯形式
- MATLAB - 特征值和特征向量
- MATLAB - 积分
- MATLAB - 积分
- MATLAB - 二重积分
- MATLAB - 梯形法则
- MATLAB - 辛普森法则
- MATLAB - 其他
- MATLAB - 微积分
- MATLAB - 微分
- MATLAB - 矩阵的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用资源
- MATLAB - 快速指南
- MATLAB - 有用资源
- MATLAB - 讨论
MATLAB - 运算符
运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。MATLAB 主要用于对整个矩阵和数组进行操作。因此,MATLAB 中的运算符同时作用于标量和非标量数据。MATLAB 允许以下类型的基本运算:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 按位运算
- 集合运算
算术运算符
MATLAB 允许两种不同的算术运算:
- 矩阵算术运算
- 数组算术运算
矩阵算术运算与线性代数中定义的相同。数组运算对一维和多维数组都执行逐元素运算。
矩阵运算符和数组运算符通过句点 (.) 符号区分。但是,由于加法和减法运算对于矩阵和数组都是相同的,因此两种情况下的运算符都相同。下表简要说明了运算符:
序号 | 运算符和描述 |
---|---|
1 | + 加法或一元加。A+B 将变量 A 和 B 中存储的值相加。A 和 B 必须具有相同的大小,除非其中一个是标量。标量可以加到任何大小的矩阵上。 |
2 | - 减法或一元减。A-B 从 A 中减去 B 的值。A 和 B 必须具有相同的大小,除非其中一个是标量。标量可以从任何大小的矩阵中减去。 |
3 | * 矩阵乘法。C = A*B 是矩阵 A 和 B 的线性代数乘积。更准确地说, 对于非标量 A 和 B,A 的列数必须等于 B 的行数。标量可以乘以任何大小的矩阵。 |
4 | .* 数组乘法。A.*B 是数组 A 和 B 的逐元素乘积。A 和 B 必须具有相同的大小,除非其中一个是标量。 |
5 | / 斜杠或矩阵右除。B/A 几乎与 B*inv(A) 相同。更准确地说,B/A = (A'\B')'。 |
6 | ./ 数组右除。A./B 是一个矩阵,其元素为 A(i,j)/B(i,j)。A 和 B 必须具有相同的大小,除非其中一个是标量。 |
7 | \ 反斜杠或矩阵左除。如果 A 是一个方阵,则 A\B 几乎与 inv(A)*B 相同,只是计算方式不同。如果 A 是一个 n×n 矩阵,而 B 是一个具有 n 个分量的列向量,或者是一个具有几个此类列的矩阵,则 X = A\B 是方程 AX = B 的解。如果 A 的比例不好或接近奇异,则会显示警告消息。 |
8 | .\ 数组左除。A.\B 是一个矩阵,其元素为 B(i,j)/A(i,j)。A 和 B 必须具有相同的大小,除非其中一个是标量。 |
9 | ^ 矩阵幂。X^p 是 X 的 p 次幂,如果 p 是标量。如果 p 是整数,则幂通过重复平方计算。如果整数为负,则先对 X 求逆。对于 p 的其他值,计算涉及特征值和特征向量,使得如果 [V,D] = eig(X),则 X^p = V*D.^p/V。 |
10 | .^ 数组幂。A.^B 是一个矩阵,其元素为 A(i,j) 的 B(i,j) 次幂。A 和 B 必须具有相同的大小,除非其中一个是标量。 |
11 | ' 矩阵转置。A' 是 A 的线性代数转置。对于复数矩阵,这是复共轭转置。 |
12 | .' 数组转置。A.' 是 A 的数组转置。对于复数矩阵,这不会涉及共轭。 |
关系运算符
关系运算符也可以作用于标量和非标量数据。数组的关系运算符在两个数组之间执行逐元素比较,并返回相同大小的逻辑数组,其中关系为真的元素设置为逻辑 1(真),关系为假的元素设置为逻辑 0(假)。
下表显示了 MATLAB 中可用的关系运算符:
序号 | 运算符和描述 |
---|---|
1 | < 小于 |
2 | <= 小于或等于 |
3 | > 大于 |
4 | >= 大于或等于 |
5 | == 等于 |
6 | ~= 不等于 |
逻辑运算符
MATLAB 提供两种类型的逻辑运算符和函数:
逐元素 - 这些运算符对逻辑数组的对应元素进行运算。
短路 - 这些运算符对标量和逻辑表达式进行运算。
逐元素逻辑运算符对逻辑数组逐元素进行运算。符号 &、| 和 ~ 分别是逻辑数组运算符 AND、OR 和 NOT。
短路逻辑运算符允许对逻辑运算进行短路。符号 && 和 || 分别是逻辑短路运算符 AND 和 OR。
按位运算
按位运算符对位进行运算,并执行逐位运算。&、| 和 ^ 的真值表如下:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
假设 A = 60;B = 13;现在以二进制格式,它们将如下所示:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
MATLAB 提供了各种用于按位运算的函数,例如“按位与”、“按位或”和“按位非”运算、移位运算等。
下表显示了常用的按位运算:
函数 | 用途 |
---|---|
bitand(a, b) | 整数 a 和 b 的按位与 |
bitcmp(a) | a 的按位补码 |
bitget(a,pos) | 获取整数数组 a 中指定位置 pos 处的位 |
bitor(a, b) | 整数 a 和 b 的按位或 |
bitset(a, pos) | 设置 a 的特定位置 pos 处的位 |
bitshift(a, k) | 返回 a 向左移动 k 位的结果,相当于乘以 2k。k 的负值对应于向右移动位或除以 2|k| 并四舍五入到最接近负无穷大的整数。任何溢出位都会被截断。 |
bitxor(a, b) | 整数 a 和 b 的按位异或 |
swapbytes | 交换字节顺序 |
集合运算
MATLAB 提供了各种用于集合运算的函数,例如并集、交集和测试集合成员资格等。
下表显示了一些常用的集合运算:
序号 | 函数和描述 |
---|---|
1 | intersect(A,B) 两个数组的集合交集;返回 A 和 B 共有的值。返回的值按排序顺序排列。 |
2 | intersect(A,B,'rows') 将 A 的每一行和 B 的每一行都视为单个实体,并返回 A 和 B 共有的行。返回矩阵的行按排序顺序排列。 |
3 | ismember(A,B) 返回一个与 A 大小相同的数组,其中 A 的元素在 B 中找到的位置为 1(真)。在其他位置,它返回 0(假)。 |
4 | ismember(A,B,'rows') 将 A 的每一行和 B 的每一行都视为单个实体,并返回一个向量,其中矩阵 A 的行也是 B 的行的位置为 1(真)。在其他位置,它返回 0(假)。 |
5 | issorted(A) 如果数组 A 中的元素按排序顺序排列,则返回逻辑 1(真),否则返回逻辑 0(假)。输入 A 可以是向量或 N×1 或 1×N 的字符串单元格数组。A 被认为是排序的,如果 A 和 sort(A) 的输出相等。 |
6 | issorted(A, 'rows') 如果二维矩阵 A 的行按排序顺序排列,则返回逻辑 1(真),否则返回逻辑 0(假)。矩阵 A 被认为是排序的,如果 A 和 sortrows(A) 的输出相等。 |
7 | setdiff(A,B) 两个数组的集合差;返回 A 中不在 B 中的值。返回数组中的值按排序顺序排列。 |
8 | setdiff(A,B,'rows') 将 A 和 B 的每一行都视为单个实体,并返回 A 中不在 B 中的行。返回矩阵的行按排序顺序排列。 'rows' 选项不支持单元格数组。 |
9 | setxor 两个数组的集合异或 |
10 | union 两个数组的集合并 |
11 | unique 数组中的唯一值 |