运算符是一个符号,告诉编译器执行特定的数学或逻辑操作, MATLAB被设计为主要在整个矩阵和数组上运行,因此,MATLAB中的运算符可同时处理标量和非标量数据,MATLAB允许以下类型的基本运算-
MATLAB允许两种不同类型的算术运算-
矩阵算术运算与线性代数中定义的相同。数组操作是在一维和多维数组上逐元素执行的。
矩阵运算符和数组运算符由句点(.)符号区分。但是,由于矩阵和数组的加法和减法运算相同,因此两种情况的运算符均相同。
Sr.No. | 运算符 & 描述 |
---|---|
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 的解。 |
8 | .\ 数组左分割。 A.\B是元素B(i,j)/A(i,j)的矩阵。 A和B的大小必须相同,除非其中一个是标量。 |
9 | ^ 矩阵功率。如果p是标量,则X ^ p是幂p的X。如果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 = 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中可用的关系运算符-
Sr.No. | 运算符 & 描述 |
---|---|
1 | < 少于 |
2 | <= 少于或等于 |
3 | > 大于 |
4 | >= 大于或等于 |
5 | == 等于 |
6 | ~= 不等于 |
创建一个脚本文件并输入以下代码-
a = 100; b = 200; if (a >= b) max = a else max = b end
当您运行文件时,它将产生以下结果-
max= 200
除了上述关系运算符,MATLAB还提供了以下用于相同目的的命令/函数-
Sr.No. | 函数 & 描述 |
---|---|
1 | eq(a, b) 测试a是否等于b |
2 | ge(a, b) 测试a是否大于或等于b |
3 | gt(a, b) 测试a是否大于b |
4 | le(a, b) 测试a是否小于或等于b |
5 | lt(a, b) 测试a是否小于b |
6 | ne(a, b) 测试a是否不等于b |
7 | isequal 测试数组是否相等 |
8 | isequaln 测试数组是否相等,将NaN值视为相等 |
创建一个脚本文件并输入以下代码-
% 比较两个值 a = 100; b = 200; if (ge(a,b)) max = a else max = b end % 比较两个不同的值 a = 340; b = 520; if (le(a, b)) disp(' a is either less than or equal to b') else disp(' a is greater than b') end
当您运行该文件时,它会产生以下结果 -
max= 200 a is either less than or equal to b
逐个元素的逻辑运算符在逻辑数组上逐个元素地进行操作。 符号&,|和〜是逻辑数组运算符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 % 让我们改变 a 和 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
函数 | 用途 |
---|---|
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 位,相当于乘以2 k 。 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
MATLAB提供了用于集合操作的各种函数,例如联合,交集和集合成员资格的测试等。
下表显示了一些常用的设置操作-
Sr.No. | 函数 & 描述 |
---|---|
1 | intersect(A,B) 设置两个数组的交集;返回A和B通用的值。返回的值按排序顺序。 |
2 | intersect(A,B,'rows') 链接:https://www.learnfk.comhttps://www.learnfk.com/matlab/matlab-operators.html 来源:LearnFk无涯教程网 将A的每一行和B的每一行视为单个实体,并返回A和B共有的行。返回矩阵的行按排序顺序。 |
3 | ismember(A,B) 返回与A大小相同的数组,其中包含1(真),其中A的元素在B中找到。在其他地方,它返回0(假)。 |
4 | ismember(A,B,'rows') 将A的每一行和B的每一行都视为单个实体,并返回包含1(true)的向量,其中矩阵A的行也是B的行。在其他地方,它返回0(false)。 |
5 | issorted(A) 如果A的元素按排序顺序返回逻辑1(真),否则返回逻辑0(假)。输入A可以是向量或字符串的N×1或1×N单元格数组。如果A和sort(A)的输出相等,则认为 A已排序。 |
6 | issorted(A,"rows") 如果二维矩阵A的行按排序顺序,则返回逻辑1(真),否则返回逻辑0(假)。如果矩阵A和sortrows(A)的输出相等,则认为矩阵A已排序。 |
7 | setdiff(A,B) 设置两个数组的差;返回A中的值,而不是B中的值。返回的数组中的值按排序顺序。 |
8 | setdiff(A,B,'rows') 将A的每一行和B的每一行都视为单个实体,并从A中返回不在B中的行。返回矩阵的行按排序顺序。 'rows'options不支持单元阵列。 |
9 | setxor 设置两个数组的异或 |
10 | union 设置两个数组的并集 |
11 | 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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕