我刚发现语句any('')返回逻辑0,而语句all('')返回逻辑1.
如果函数any不认为空字符串('')为非零,则函数all应该执行相同的操作,但是从结果来看,函数all似乎认为空字符串('')为非零.
顺便说一下,类似的事情发生在any(NaN)返回逻辑0而all(NaN)返回逻辑1的情况下.
这是一个MATLAB错误吗?
这是我正在使用的MATLAB的版本信息.
MATLAB版本:9.1.0.441655(R2016b)
MATLAB许可证编号:DEMO
根据任何文件的
定义:
any(x)...确定是否有任何元素是非零数字或逻辑1(真)
实际上,它
any是逻辑OR运算符的自然扩展.如果A是空的0乘0矩阵,则
any(A)返回逻辑0(假).
和所有的定义:
all(x)...确定元素是否全为非零或逻辑1(真)
在实践中,
all是逻辑AND运算符的自然扩展.如果A是空的0乘0矩阵,则
all(A)返回逻辑1(真).
我们可以实现这两个功能:
function out = Any(V)
out = false;
for k = 1:numel(V)
out = out || (~isnan(V(k)) && V(k) ~= 0);
end
end
function out = All(V)
out = true;
for k = 1:numel(V)
out = out && (V(k) ~= 0);
end
end
Run Code Online (Sandbox Code Playgroud)
说明:
- any我们假设所有元素都不是非零[所以都是零]我们想证明假设是错误的,所以我们提供的初始值为false.
-因为any是逻辑OR运算符的自然延伸,我们使用||
-因为我们要检查nonzero我们使用数字V(k) ~= 0
-因为我们应该检查非零numbers和NaN是Not a Number我们使用~isnan(V(k)).
- all我们假设所有元素都是非零[所以都是1]我们想要证明假设是错误的,所以我们提供了一个初始值true
-Because all是我们使用的逻辑AND运算符的自然扩展&&
- 因为我们应该检查对于非零我们使用V(k) ~= 0
- 因为定义all 并不强制非零元素是我们不使用的数字~isnan(V(k))
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |