运算符是一个标记,它汇报编译器执行特定的数学或逻辑操纵。 MATLAB主要用于整个矩阵和阵列的操纵。因此,MATLAB中的运算符既可用于标量数据也可用于非标量数据。MATLAB答允以下范例的根基操纵 –
下面我们来一个一个地进修。
算术运算符
MATLAB答允两种差异范例的算术运算 –
矩阵算术运算与线性代数中界说的沟通。在一维和多维数组中,逐个元素执行数组运算。
矩阵运算符和数组运算符由句点标记(.)区分。 然而,由于对付矩阵和阵列的加减运算是沟通的,因此对付这两种环境,运算符沟通。下表扼要说明白算术运算符 –
算术运算符示例代码
| 运算符 | 描写说明 |
|---|---|
+ |
加法或一元加法运算。A + B暗示相加存储在变量A和B中的值。A和B必需具有沟通的巨细,除非是标量。 标量可以添加到任何巨细的矩阵。 |
- |
减法或一元减法运算。 A-B暗示从A中减去B的值。A和B必需具有沟通的巨细,除非是标量。可以从任何巨细的矩阵中减去标量。 |
* |
矩阵乘法。 C = A * B是矩阵A和B的线性代数乘积。更精确地说,执行公式: ,对付非标量A和B,A的列数必需便是B的行数。标量可以乘以任何巨细的矩阵。 |
.* |
阵列乘法。 A .* B是数组A和B的逐个元素乘积。A和B必需具有沟通的巨细,除非它们之一是标量。 |
/ |
数组乘法。A .* B是数组A和B的逐个元素乘积。A和B必需具有沟通的巨细,除非它们之一是标量。 |
./ |
数组右除。A./B是具有元素A(i,j)/ B(i,j)的矩阵。 A和B必需具有沟通的巨细,除非它们之一是标量。 |
\ |
反斜杠或数组左除。假如A是一个方阵,A \ B与inv(A)* B大抵沟通,除了以差异的方法计较。假如A是n×n矩阵,B是具有n个分量的列向量或具有若干这样的列的矩阵,则X = A \ B是方程AX = B的解。假如A是犯科则或险些单数,将显示告诫动静。 |
.\ |
阵列左除。A .\ B是具有元素B(i,j)/ A(i,j)的矩阵。A和B必需具有沟通的巨细,除非它们之一是标量。 |
^ |
矩阵 X ^ p是X的P次幂,假如p是标量。 假如p是整数,则通过反复平方来计较幂值。 假如整数为负,则X首先倒置。 对付p的其他值,计较涉及特征值和特征向量,使得假如[V,D] = eig(X),则X ^ p = V * D. ^ p / V。 |
.^ |
阵列幂值, A ^ B是B(i,j)到A(i,j)的幂矩阵。A和B必需具有沟通的巨细,除非它们之一是标量。 |
' |
矩阵转置。 '是A的线性代数转置。对付复数矩阵,这是复共轭转置。 |
.' |
数组转置。.'是A的数组转置。对付复数矩阵,这不涉及共轭。 |
干系运算符
干系运算符也可以用于标量和非标量数据。数组的干系运算符在两个数组之间执行逐个元素的较量,并返回沟通巨细的逻辑数组,假如为真,则元素配置为逻辑1(true),假如为假,则元素配置为逻辑0(false)。
下表显示了MATLAB中可用的干系运算符:
干系运算符示例代码
| 操纵符 | 说明描写 |
|---|---|
< |
小于 |
<= |
小于或便是 |
> |
大于 |
>= |
大于或便是 |
== |
便是 |
~= |
不便是 |
逻辑运算符
#p#分页标题#e#
MATLAB提供两种范例的逻辑运算符和函数:
元素逻辑运算符在逻辑数组上运行逐个元素。标记&,|和〜是逻辑数组运算符AND,OR和NOT。
短路逻辑运算符答允逻辑运算短路。标记&&和||是逻辑短路运算符AND和OR。
逻辑运算符示例代码
位运算
按位运算符对位执行,并执行逐位运算。&,|和^的真值表如下 –

假设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的位与AND操纵 |
||
| bitcmp(a) | a的比特补码 |
||
| bitget(a,pos) | 在整数数组a中,获取指定的位置pos位字节 |
||
| bitor(a, b) | 整数a和b的逐位OR操纵 |
||
| bitset(a, pos) | 配置在指定pos处的位字节 |
||
| bitshift(a, k) | 返回向左移位k字节,相当于乘以2^k。 k的负值对应于向右移位或除以`2^ |
k | ` 并舍入到最靠近的整数到负无穷大。任何溢出位都被截断。 |
| bitxor(a, b) | 整数a和b的逐字节位XOR操纵 |
||
| swapbytes | 互换字节排序 |
荟萃操纵
MATLAB为荟萃操纵提供了各类成果,如连系,交集和荟萃成员的测试等。
下表显示了一些常用的荟萃操纵 –
| 函数 | 描写 |
|---|---|
| intersect(A,B) | 配置两个阵列的交集; 也就是返回A和B配合的值。返回的值按排序顺序分列。 |
| intersect(A,B,’rows’) | 将A的每一行和B的每一行视为单个实体,并返回A和B两者配合的行。返回矩阵的行按排序顺序分列。 |
| ismember(A,B) | 返回与A沟通巨细的数组,个中包括1(true),个中A的元素位于B中。其他处所返回0(false)。 |
| ismember(A,B,’rows’) | 将A的每行和B的每一行视为单个实体,并返回一个包括1(true)的向量,个中矩阵A的行也是B行。其他返回0(false)。 |
| issorted(A) | 假如A的元素按排序顺序返回逻辑1(真),不然返回逻辑0(假)。输入A可以是一个向量,也可以是N-by-1或1-by-N的字符串数组。 假如A和sort(A)的输出相等,则认为A被排序。 |
| issorted(A, ‘rows’) | 假如二维矩阵A的行按排序顺序返回逻辑1(真),不然返回逻辑0(假)。 假如A和排序(A)的输出相等,则认为矩阵A被排序。 |
| setdiff(A,B) | 配置两个数组的差别; 返回A中不在B中的值。返回的数组中的值按排序顺序分列。 |
| setdiff(A,B,’rows’) | 将A的每一行和B的每一行视为单个实体,并从不在B中的A返回行。返回的矩阵的行按排序顺序分列。'rows'选项不支持单位格数组。 |
| setxor | 配置两个数组的异或 |
| union | 配置两个数组的并集 |
| unique | 使数组中的值独一 |
,对付非标量