inf或Inf?纳米还是NaN?

时间:2013-01-10 22:27:19

标签: matlab

似乎infInf在MATLAB中完全相同(同样为nanNaN,但不是Nan)。有什么不同吗?

>> which inf
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/inf)
>> which Inf
built-in (/Applications/MATLAB_R2011b.app/toolbox/matlab/elmat/Inf)

如果它们相同,应该在实践中使用哪一个?对于分配数组,我一直在x = inf(3,5)之后使用zeros样式,而ones是所有小型上限。为了分配单个值,我使用x = Inf。你认为这是一贯的使用吗?

2 个答案:

答案 0 :(得分:12)

大多数惯用的一致性都是naninf,但MATLAB为您提供了大写NaNInf的替代方式,您可以在其他地方找到它,例如例如,在打印输出中。请注意,MATLAB 区分大小写。没有人会使用NanInF,因此MATLAB不会提供这些“别名”。

修改 要在数据向量中使用,例如在[3.7, 1.2, NaN, 3.1]中,我一直发现自己也使用NaN,但以下实验建议非常强烈这个用法是 not 与MATLAB的内部工作密切相关。创建一个函数n = NaN(),返回4并将其保存为当前文件夹中的NaN.m。定义上面的向量将导致[3.7, 1.2, 4.0, 3.1]显示 MATLAB不理解 NaN 作为常量,并将查找一个函数, ,按照MATLAB习语,拼写全部小写。

现在让我们在忘记之前快速删除NaN.m,并在数据列中继续使用NaN

答案 1 :(得分:2)

以下是MATLAB似乎使用的约定:

非数字:始终使用NaNisnan()

等组合除外

对于无限:使用inf作为函数,并使用Inf作为值(和INFs作为倍数,但这当然不是命令)。请注意,这有点棘手,因为这意味着对inf的评估会给Inf

摘自:

help Inf:inf(N)是INF的N×N矩阵。

help nan:NaN(N)是NaNs的N-by-N矩阵。

help isnan:例如,isnan([pi NaN Inf -Inf])是[0 1 0 0]。