MATLAB 运算符
-
运算符
运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。MATLAB设计为主要在整个矩阵和数组上运行。因此,MATLAB中的运算符可同时处理标量和非标量数据。MATLAB允许以下类型的基本运算-- 算术运算符
- 关系运算符
- 逻辑运算符
- 按位运算
- Set 操作符
-
算术运算符
MATLAB允许两种不同类型的算术运算-- 矩阵算术运算
- 数组算术运算
矩阵算术运算与线性代数中定义的相同。数组操作在一维和多维数组上逐个元素地执行。矩阵运算符和数组运算符由句点(.)符号区分。但是,由于矩阵和数组的加法和减法运算相同,因此两种情况的运算符均相同。下表简要介绍了运算符-运算符 说明 + 加法或一元加法。 A + B将存储在变量A和B中的值相加。A和B的大小必须相同,除非一个是标量。 可以将标量添加到任何大小的矩阵中。 - 减或一元减。 A-B从A减去B的值。A和B必须具有相同的大小,除非一个是标量。 可以从任何大小的矩阵中减去标量。 * 矩阵乘法。 C = A * B是矩阵A和B的线性代数积。,$$C(i,j) = \sum_{k=1}^n A(i,k)B(k,j)$$对于非标量A和B,A的列数必须等于B的行数。标量可以乘以任意大小的矩阵。 .* 数组乘法。 A. * B是数组A和B的逐元素乘积。A和B必须具有相同的大小,除非它们之一是标量。 / 斜杠或矩阵右除。 B / A与B * inv(A)大致相同。 更准确地说,B / A =(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的大小必须相同,除非其中一个是标量。 ^ 矩阵功率。 如果p是标量,则X ^ p是幂p的X。 如果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的线性代数转置。对于复矩阵,这是复共轭转置。 .' 数组转置。 一种。' 是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
-
关系运算符
关系运算符还可以处理标量和非标量数据。数组的关系运算符在两个数组之间执行逐个元素比较,并返回相同大小的逻辑数组,其中元素设置为逻辑1(true),关系为真,元素设置为逻辑0(false)。下表显示了MATLAB中可用的关系运算符-运算符 说明 < 少于 <= 小于或等于 > 大于 >= 大于或等于 == 等于 ~= 不等于 示例:创建一个脚本文件并输入以下代码-
尝试一下a = 100; b = 200; if (a >= b) max = a else max = b end
运行文件时,它将产生以下结果-max = 200
-
逻辑运算符
MATLAB提供两种类型的逻辑运算符和函数-- 逐个元素-这些运算符对逻辑数组的相应元素进行操作。
- 短路-这些运算符对标量和逻辑表达式进行运算。
逐个元素的逻辑运算符在逻辑数组上逐个元素地进行操作。符号&,|和〜是逻辑数组运算符AND,OR和NOT。短路逻辑运算符允许逻辑运算短路。符号&&和|| 是逻辑短路运算符AND和OR。示例:创建一个脚本文件并输入以下代码-
尝试一下a = 5; b = 20; if ( a && b ) disp('Line 1 - Condition is true'); end if ( a || b ) disp('Line 2 - Condition is true'); end % lets change the value of a and b a = 0; b = 10; if ( a && b ) disp('Line 3 - Condition is true'); else disp('Line 3 - Condition is not true'); end if (~(a && b)) disp('Line 4 - Condition is true'); end
运行文件时,它将产生以下结果-Line 1 - Condition is true Line 2 - Condition is true Line 3 - Condition is not true Line 4 - Condition is true
-
按位运算
按位运算符对位进行操作并执行逐位操作。&,|和^的真值表如下-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) 在某个位置的特定位置设置位 bitshift(a, k) 返回向左移位k位,等于乘以2k。 k的负值对应于右移或除以2 | k |。 并朝负无穷大舍入到最接近的整数。 任何溢出位都将被截断。 bitxor(a, b) 整数a和b的按位XOR swapbytes 交换字节顺序 示例:创建一个脚本文件并输入以下代码-
尝试一下a = 60; % 60 = 0011 1100 b = 13; % 13 = 0000 1101 c = bitand(a, b) % 12 = 0000 1100 c = bitor(a, b) % 61 = 0011 1101 c = bitxor(a, b) % 49 = 0011 0001 c = bitshift(a, 2) % 240 = 1111 0000 */ c = bitshift(a,-2) % 15 = 0000 1111 */
运行文件时,它将产生以下结果-c = 12 c = 61 c = 49 c = 240 c = 15
-
Set 操作符
MATLAB提供了用于集合操作的各种功能,例如联合,交集和集合成员资格的测试等。下表显示了一些常用的设置操作-函数 说明 intersect(A,B) 设置两个数组的交集;返回A和B通用的值。返回的值按排序顺序。 intersect(A,B,'rows') 将A的每一行和B的每一行都视为单个实体,并返回A和B共有的行。返回矩阵的行按排序顺序。 ismember(A,B) 返回与A大小相同的数组,其中包含1(真),其中A的元素在B中找到。在其他地方,它返回0(假)。 ismember(A,B,'rows') 将A的每一行和B的每一行都视为单个实体,并返回一个包含1(true)的向量,其中矩阵A的行也是B的行。在其他地方,它返回0(false)。 issorted(A) 如果A的元素按排序顺序返回逻辑1(真),否则返回逻辑0(假)。输入A可以是向量或字符串的N×1或1×N单元格数组。如果A和sort(A)的输出相等,则认为A已排序。 issorted(A, 'rows') 如果二维矩阵A的行按排序顺序,则返回逻辑1(真),否则返回逻辑0(假)。如果A和sortrows(A)的输出相等,则认为矩阵A已排序。 setdiff(A,B) 设置两个数组的差;返回A中的值,而不是B中的值。返回的数组中的值按排序顺序。 setdiff(A,B,'rows') 将A的每一行和B的每一行视为单个实体,并从A中返回不在B中的行。返回矩阵的行按排序顺序。 'rows'选项不支持单元阵列。 setxor 设置两个数组的异或 union 设置两个数组的并集 unique 数组中的唯一值 示例:创建一个脚本文件并输入以下代码-
尝试一下a = [7 23 14 15 9 12 8 24 35] b = [ 2 5 7 8 14 16 25 35 27] u = union(a, b) i = intersect(a, b) s = setdiff(a, b)
运行文件时,它将产生以下结果-a = 7 23 14 15 9 12 8 24 35 b = 2 5 7 8 14 16 25 35 27 u = 2 5 7 8 9 12 14 15 16 23 24 25 27 35 i = 7 8 14 35 s = 9 12 15 23 24