运算符是一个标记,它汇报编译器执行特定的数学或逻辑操纵。 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 | 使数组中的值独一 |