MATLAB - 逻辑运算



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

逻辑运算函数

除了上述逻辑运算符外,MATLAB 还提供以下命令或函数用于相同的目的:

序号 函数和描述
1

and(A, B)

查找数组或标量输入的逻辑 AND;对所有输入数组 A、B 等执行逻辑 AND,并返回一个包含设置为逻辑 1(真)或逻辑 0(假)的元素的数组。如果所有输入数组在同一数组位置都包含非零元素,则输出数组的元素设置为 1。否则,该元素设置为 0。

2

not(A)

查找数组或标量输入的逻辑 NOT;对输入数组 A 执行逻辑 NOT,并返回一个包含设置为逻辑 1(真)或逻辑 0(假)的元素的数组。如果输入数组在同一数组位置包含零值元素,则输出数组的元素设置为 1。否则,该元素设置为 0。

3

or(A, B)

查找数组或标量输入的逻辑 OR;对所有输入数组 A、B 等执行逻辑 OR,并返回一个包含设置为逻辑 1(真)或逻辑 0(假)的元素的数组。如果任何输入数组在同一数组位置包含非零元素,则输出数组的元素设置为 1。否则,该元素设置为 0。

4

xor(A, B)

逻辑异或;对数组 A 和 B 的对应元素执行异或运算。如果 A(i,j,...) 或 B(i,j,...) 非零,但两者并非都非零,则结果元素 C(i,j,...) 为逻辑真 (1)。

5

all(A)

确定数组 A 的所有数组元素是否为非零或真。

  • 如果 A 是向量,则如果所有元素都非零,all(A) 返回逻辑 1(真);如果一个或多个元素为零,则返回逻辑 0(假)。

  • 如果 A 是非空矩阵,则 all(A) 将 A 的列视为向量,返回一个由逻辑 1 和 0 组成的行向量。

  • 如果 A 是空的 0×0 矩阵,则 all(A) 返回逻辑 1(真)。

  • 如果 A 是多维数组,则 all(A) 沿第一个非单一维度进行运算,并返回一个逻辑值的数组。此维度的尺寸减小到 1,而所有其他维度的尺寸保持不变。

6

all(A, dim)

沿由标量 *dim* 指定的 A 的维度进行测试。

7

any(A)

确定是否有任何数组元素是非零的;测试数组沿各个维度的任何元素是否为非零数或逻辑 1(真)。any 函数忽略为 NaN(非数字)的条目。

  • 如果 A 是向量,则如果 A 的任何元素是非零数或逻辑 1(真),则 any(A) 返回逻辑 1(真);如果所有元素都为零,则返回逻辑 0(假)。

  • 如果 A 是非空矩阵,则 any(A) 将 A 的列视为向量,返回一个由逻辑 1 和 0 组成的行向量。

  • 如果 A 是空的 0×0 矩阵,则 any(A) 返回逻辑 0(假)。

  • 如果 A 是多维数组,则 any(A) 沿第一个非单一维度进行运算,并返回一个逻辑值的数组。此维度的尺寸减小到 1,而所有其他维度的尺寸保持不变。

8

any(A,dim)

沿由标量 *dim* 指定的 A 的维度进行测试。

9

逻辑 0(假)

10

false(n)

是一个 n×n 的逻辑零矩阵

11

false(m, n)

是一个 m×n 的逻辑零矩阵。

12

false(m, n, p, ...)

是一个 m×n×p×... 的逻辑零数组。

13

false(size(A))

是一个与数组 A 大小相同的逻辑零数组。

14

false(...,'like',p)

是一个与逻辑数组 p 数据类型和稀疏性相同的逻辑零数组。

15

ind = find(X)

查找非零元素的索引和值;找到数组 X 的所有非零元素,并在向量中返回这些元素的线性索引。如果 X 是行向量,则返回的向量是行向量;否则,它返回列向量。如果 X 不包含非零元素或为空数组,则返回空数组。

16

ind = find(X, k)

ind = find(X, k, 'first')

最多返回与 X 的非零条目对应的前 k 个索引。k 必须是正整数,但可以是任何数值数据类型。

17

ind = find(X, k, 'last')

最多返回与 X 的非零条目对应的最后 k 个索引。

18

[row,col] = find(X, ...)

返回矩阵 X 中非零条目的行和列索引。此语法在处理稀疏矩阵时特别有用。如果 X 是 N 维数组且 N > 2,则 col 包含列的线性索引。

19

[row,col,v] = find(X, ...)

返回 X 中非零条目的列向量或行向量 v,以及行和列索引。如果 X 是逻辑表达式,则 v 是逻辑数组。输出 v 包含通过计算表达式 X 获得的逻辑数组的非零元素。

20

islogical(A)

确定输入是否为逻辑数组;如果 A 是逻辑数组,则返回真,否则返回假。如果 A 是从逻辑类派生的类的实例,则它也返回真。

21

logical(A)

将数值转换为逻辑值;返回一个可用于逻辑索引或逻辑测试的数组。

22

逻辑 1(真)

23

true(n)

是一个 n×n 的逻辑 1 矩阵。

24

true(m, n)

是一个 m×n 的逻辑 1 矩阵。

25

true(m, n, p, ...)

是一个 m×n×p×… 的逻辑 1 数组。

26

true(size(A))

是一个与数组 A 大小相同的逻辑 1 数组。

27

true(...,'like', p)

是一个与逻辑数组 p 具有相同数据类型和稀疏性的逻辑 1 数组。

matlab_operators.htm
广告
© . All rights reserved.