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等执行逻辑与操作,并返回一个包含元素设置为逻辑1(true)或逻辑0(false)的数组。如果所有输入数组在同一位置含有非零元素,则输出数组中的元素设置为1。否则,该元素设置为0。 |
2 | not(A) 查找数组或标量输入的逻辑非;对输入数组A执行逻辑非操作,并返回一个包含元素设置为逻辑1(true)或逻辑0(false)的数组。如果输入数组在同一位置含有零值元素,则输出数组中的元素设置为1。否则,该元素设置为0。 |
3 | or(A, B) 找到数组或标量输入的逻辑或;对所有输入数组A、B等执行逻辑或操作,并返回一个包含元素为逻辑1(真)或逻辑0(假)的数组。如果任何输入数组在相同的数组位置上包含非零元素,则输出数组的一个元素设置为1。否则,该元素设置为0。 |
4 | xor(A, B) 逻辑异或;对数组A和B的相应元素执行异或运算。结果元素C(i,j,…)的逻辑值为真(1),如果A(i,j,…)或B(i,j,…),但不是同时为非零。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是一个向量,any(A)返回逻辑值1(真),如果A的任何元素是非零数或逻辑值1(真),并且如果所有元素都是零,则返回逻辑值0(假)。 如果A是一个非空矩阵,any(A)将A的列视为向量,返回一个由逻辑值1和0组成的行向量。 如果A是一个空的0×0矩阵,any(A)返回逻辑值0(false)。 如果A是一个多维数组,any(A)沿着第一个非单例维度进行操作,并返回一个逻辑值数组。这个维度的大小减小为1,而所有其他维度的大小保持不变。 |
8 | any(A,dim) 沿着A指定的维度进行测试,该维度由标量dim指定。 |
9 | false 逻辑值0(false) |
10 | false(n) 是一个n×n的逻辑值全为0的矩阵 |
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’) 返回最多前k个对应于矩阵X非零元素的索引。k必须是正整数,但可以是任何数值数据类型。 |
17 | ind = find(X, k, ‘last’) 返回最多后k个对应于矩阵X非零元素的索引。 |
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是逻辑数组,则返回true,否则返回false。如果A是从逻辑类派生的类的实例,则也返回true。 |
21 | logical(A) 将数值转换为逻辑值;返回一个可以用于逻辑索引或逻辑测试的数组。 |
22 | true 逻辑值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数组。 |