- 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 语句
- 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 - return 语句
- MATLAB - 无返回值函数
- MATLAB - 局部函数
- MATLAB - 全局变量
- MATLAB - 函数句柄
- MATLAB - 滤波器函数
- MATLAB - 阶乘
- MATLAB - 私有函数
- MATLAB - 子函数
- MATLAB - 递归函数
- MATLAB - 函数优先级顺序
- MATLAB - map 函数
- MATLAB - mean 函数
- MATLAB - end 函数
- MATLAB - 错误处理
- MATLAB - 错误处理
- MATLAB - try…catch 语句
- 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 - 逆傅里叶变换
- 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 - GNU Octave
- MATLAB - Simulink
- 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 | ^ 矩阵幂。如果 p 是标量,则 X^p 是 X 的 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 的数组转置。对于复数矩阵,这不会涉及共轭。 |
示例
以下示例演示了对标量数据使用算术运算符。使用以下代码创建一个脚本文件:
a = 10; b = 20; c = a + b d = a - b e = a * b f = a / b g = a \ b x = 7; y = 3; z = x ^ y
运行文件时,会产生以下结果:
c = 30 d = -10 e = 200 f = 0.50000 g = 2 z = 343
算术运算函数
除了上述算术运算符之外,MATLAB 还提供以下用于类似目的的命令/函数:
序号 | 函数和描述 |
---|---|
1 | uplus(a) 一元加;增加 a 的量 |
2 | plus (a,b) 加法;返回 a + b |
3 | uminus(a) 一元减;减少 a 的量 |
4 | minus(a, b) 减法;返回 a - b |
5 | times(a, b) 数组乘法;返回 a.*b |
6 | mtimes(a, b) 矩阵乘法;返回 a*b |
7 | rdivide(a, b) 数组右除;返回 a ./ b |
8 | ldivide(a, b) 数组左除;返回 a.\ b |
9 | mrdivide(A, B) 求解线性方程组 *xA = B* 的 *x* |
10 | mldivide(A, B) 求解线性方程组 *Ax = B* 的 *x* |
11 | power(a, b) 数组幂;返回 a.^b |
12 | mpower(a, b) 矩阵幂;返回 a ^ b |
13 | cumprod(A) 累积乘积;返回与数组 A 大小相同的数组,包含累积乘积。
|
14 | cumprod(A, dim) 沿维度 *dim* 返回累积乘积。 |
15 | cumsum(A) 累积和;返回包含累积和的数组 A。
|
16 | cumsum(A, dim) 沿维度 *dim* 返回元素的累积和。 |
17 | diff(X) 差分和近似导数;计算 X 相邻元素之间的差分。
|
18 | diff(X,n) 递归应用 diff n 次,得到 n 次差分。 |
19 | diff(X,n,dim) 沿由标量 dim 指定的维度计算的 n 次差分函数。如果阶数 n 等于或超过维度 dim 的长度,则 diff 返回一个空数组。 |
20 | prod(A) 数组元素的乘积;返回 A 的数组元素的乘积。
如果输入 A 为单精度,则 prod 函数计算并返回 B 为单精度。对于所有其他数值和逻辑数据类型,prod 计算并返回 B 为双精度。 |
21 | prod(A,dim) 返回沿维度 dim 的乘积。例如,如果 A 是一个矩阵,prod(A,2) 是一个列向量,包含每一行的乘积。 |
22 | prod(___,datatype) 进行乘法运算并返回指定数据类型 datatype 的数组。 |
23 | sum(A)
|
24 | sum(A,dim) 沿由标量 dim 指定的 A 维度求和。 |
25 | sum(..., 'double') sum(..., dim,'double') 使用双精度执行加法运算,并返回双精度类型的答案,即使 A 的数据类型为单精度或整数类型。对于整数类型,这是默认值。 |
26 | sum(..., 'native') sum(..., dim,'native') 使用 A 的原生数据类型执行加法运算,并返回相同数据类型的答案。对于单精度和双精度,这是默认值。 |
27 | ceil(A) 向正无穷大舍入;将 A 的元素舍入到大于或等于 A 的最接近的整数。 |
28 | fix(A) 向零舍入 |
29 | floor(A) 向负无穷大舍入;将 A 的元素舍入到小于或等于 A 的最接近的整数。 |
30 | idivide(a, b) idivide(a, b,'fix') 带舍入选项的整数除法;与 a./b 相同,只是分数商向零舍入到最接近的整数。 |
31 | idivide(a, b, 'round') 分数商舍入到最接近的整数。 |
32 | idivide(A, B, 'floor') 分数商向负无穷大舍入到最接近的整数。 |
33 | idivide(A, B, 'ceil') 分数商向正无穷大舍入到最接近的整数。 |
34 | mod (X,Y) 除法后的模;返回 X - n.*Y,其中 n = floor(X./Y)。如果 Y 不是整数,并且商 X./Y 在舍入误差范围内为整数,则 n 为该整数。输入 X 和 Y 必须是相同大小的实数数组,或实数标量(前提是 Y ~=0)。 请注意 −
|
35 | rem (X,Y) 除法后的余数;返回 X - n.*Y,其中 n = fix(X./Y)。如果 Y 不是整数,并且商 X./Y 在舍入误差范围内为整数,则 n 为该整数。输入 X 和 Y 必须是相同大小的实数数组,或实数标量(前提是 Y ~=0)。 请注意 −
|
36 | round(X) 舍入到最接近的整数;将 X 的元素舍入到最接近的整数。分数部分为 0.5 的正数舍入到最接近的正整数。分数部分为 -0.5 的负数舍入到最接近的负整数。 |