gpt4 book ai didi

matlab - 为什么任何 ('' ) 返回逻辑 0 而所有 ('' ) 返回逻辑 1?

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:05 26 4
gpt4 key购买 nike

我刚刚发现语句 any('') 返回一个 logical 0,而语句 all('') 返回一个 < strong>逻辑 1。

如果函数 any 不认为空字符串 ('') 为非零,则函数 all 应该做同样的事情,但是从结果来看,函数 all 似乎将空字符串 ('') 视为非零值。

顺便说一句,类似的事情发生在 any(NaN) 返回逻辑 0 而 all(NaN) 返回逻辑 1 的地方。

这是 MATLAB 错误吗?

这里是我使用的MATLAB的版本信息。
MATLAB 版本:9.1.0.441655 (R2016b)
MATLAB许可证号:DEMO

最佳答案

根据文档
any的定义| :

any(x) ...determines if any element is a nonzero number or logical 1 (true)

In practice, any is a natural extension of the logical OR operator.

If A is an empty 0-by-0 matrix, any(A) returns logical 0 (false).

all的定义:

all(x) ...determines if the elements are all nonzero or logical 1 (true)

In practice, all is a natural extension of the logical AND operator.

If A is an empty 0-by-0 matrix, then all(A) returns logical 1 (true).

我们可以同时实现这两个功能:

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

解释:

-在 any 中,我们假设所有元素都不为非零 [因此所有元素均为零],我们想证明该假设是错误的,因此我们提供初始值 false.
-因为 any 是我们使用 ||
的逻辑 OR 运算符的自然扩展-因为我们应该检查我们使用 V(k) ~= 0
非零数字- 因为我们应该检查非零的numbers 并且NaNNot a Number 我们使用~isnan(V(k)).

-在 all 中,我们假设所有元素都是非零的 [所以都是 1],我们想证明这个假设是错误的,所以我们提供一个初始值 true
- 因为 all 是我们使用 &&
的逻辑 AND 运算符的自然扩展- 因为我们应该检查非零值,所以我们使用 V(k) ~= 0
-因为 all 的定义不会强制非零元素为数字,所以我们不使用 ~isnan(V(k))

关于matlab - 为什么任何 ('' ) 返回逻辑 0 而所有 ('' ) 返回逻辑 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42640091/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com