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) 查找数组或标量输入的逻辑与; 对所有输入数组 A、B 等执行逻辑 AND,并返回一个包含设置为逻辑 1(true)或逻辑 0(false)的元素的数组。 如果所有输入数组在同一数组位置都包含非零元素,则输出数组的元素设置为 1。 否则,该元素设置为 0。 |
2 | not(A) 查找数组或标量输入的逻辑 NOT; 对输入数组 A 执行逻辑 NOT,并返回一个包含设置为逻辑 1 (true) 或逻辑 0 (false) 的元素的数组。 如果输入数组在同一数组位置包含零值元素,则输出数组的元素设置为 1。 否则,该元素设置为 0。 |
3 | or(A, B) 查找数组或标量输入的逻辑或; 对所有输入数组 A、B 等执行逻辑或,并返回包含设置为逻辑 1 (true) 或逻辑 0 (false) 的元素的数组。 如果任何输入数组在同一数组位置包含非零元素,则输出数组的元素设置为 1。 否则,该元素设置为 0。 |
4 | xor(A, B) 逻辑异或; 对数组 A 和 B 的相应元素执行异或运算。如果 A(i,j,...) 或 B(i, j,...),但不是两者都是非零。 |
5 | all(A) 确定数组 A 的所有数组元素是否都非零或 true。
|
6 | all(A, dim) 沿标量 dim 指定的 A 维度进行测试。 |
7 | any(A) 确定是否有任何数组元素非零; 测试数组各个维度上的任何元素是否为非零数字或逻辑 1 (true)。 any 函数会忽略 NaN(非数字)条目。
|
8 | any(A,dim) 沿标量 dim 指定的 A 维度进行测试。 |
9 | false 逻辑 0 (false) |
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 > 2 的 N 维数组,则 col 包含列的线性索引。 |
19 | [row,col,v] = find(X, ...) 返回 X 中非零条目的列向量或行向量 v,以及行索引和列索引。 如果 X 是逻辑表达式,则 v 是逻辑数组。 输出 v 包含通过计算表达式 X 获得的逻辑数组的非零元素。 |
20 | islogical(A) 判断输入是否为逻辑数组; 如果 A 是逻辑数组,则返回 true,否则返回 false。 如果 A 是从逻辑类派生的类的实例,它也会返回 true。 |
21 | logical(A) 将数值转换为逻辑值; 返回一个可用于逻辑索引或逻辑测试的数组。 |
22 | true 逻辑 1 (true) |
23 | true(n) 是一个 n×n 逻辑矩阵。 |
24 | true(m, n) 是一个 m×n 逻辑矩阵。 |
25 | true(m, n, p, ...) 是一个 m×n×p×... 逻辑数组。 |
26 | true(size(A)) 是一个逻辑值数组,其大小与数组 A 相同。 |
27 | true(...,'like', p) 是与逻辑数组 p 具有相同数据类型和稀疏性的逻辑数组。 |