一个逻辑变量可以保持NaN吗?

时间:2014-04-07 14:43:08

标签: matlab

在内部MATLAB函数(R2014a)的文档段落中,我找到以下 1

%   GRP2IDX treats NaNs (numeric or logical), ...

这句话暗示有一个X isnan(X)islogical(X)都评估为true。这对我来说毫无意义。我当然无法生成这样的X。例如:

>> X = true;
>> X(1, 1) = NaN;
NaN's cannot be converted to logicals. 

我的问题:是否有其他方法可以解释上述更有意义的行?


1 FWIW,完整段落是这样的:

%   GRP2IDX treats NaNs (numeric or logical), empty strings (char or cell array
%   of strings), or <undefined> values (categorical) in S as missing values and
%   returns NaNs in the corresponding rows of G. Neither GN nor GL include
%   entries for missing values.

要获得更多内容,如果您有R2014a(或可能 R2013b),请运行open table2gidx,然后在编辑器窗口中向下滚动出现。 (grp2idxtable2gidx的内部函数。)

2 个答案:

答案 0 :(得分:3)

不,尽管帮助似乎暗示了什么,但逻辑值只能是0(false)或1(true)。请参阅help logicaldocumentationNaNnot a number)严格来说是为浮点值定义的数值数据类型。它是在IEEE 754规范下定义的。

此外isnumeric(NaN)isfloat(NaN)返回true。并class(NaN)返回'double'。您可以获得单精度NaN,因为它只是一个浮点值:single(NaN)

答案 1 :(得分:0)

将其解释为“NaNs(在数字或逻辑数组中)”。由于NaN不会出现在逻辑数组中,因此该位是多余的,但这并不会使其不正确。