MATLAB - 运算符

MATLAB - 运算符 首页 / MATLAB入门教程 / MATLAB - 运算符

运算符是一个符号,告诉编译器执行特定的数学或逻辑操作, MATLAB被设计为主要在整个矩阵和数组上运行,因此,MATLAB中的运算符可同时处理标量和非标量数据,MATLAB允许以下类型的基本运算-

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 按位运算符
  • Set运算符

算术运算符

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

按位运算

按位运算符对位进行运算并执行逐位运算。 &,|和^的真值表如下-

pqp & qp | qp ^ q
00000
01011
11110
10011

假设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

Set Operations

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

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

AI技术内参 -〔洪亮劼〕

深入剖析Kubernetes -〔张磊〕

Nginx核心知识150讲 -〔陶辉〕

程序员的数学基础课 -〔黄申〕

RPC实战与核心原理 -〔何小锋〕

容量保障核心技术与实战 -〔吴骏龙〕

说透5G -〔杨四昌〕

结构写作力 -〔李忠秋〕

PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕

好记忆不如烂笔头。留下您的足迹吧 :)