7

在 MATLAB 中似乎两者infInf完全相同(同样是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. 您认为这是一致的用途吗?

4

2 回答 2

12

最惯用的一致是nanandinf但 MATLAB 为您提供了另一种大写NaNandInf的方式,您可以在其他任何地方找到它的方式,例如在打印输出中。请注意,MATLAB区分大小写。没有人会使用Nanor InF,因此 MATLAB 不提供这些“别名”。

编辑: 对于在数据向量中使用[3.7, 1.2, NaN, 3.1],我一直发现自己也在使用NaN,但以下实验非常强烈地表明,这种使用与 MATLAB 的内部工作并不密切。创建一个n = NaN()返回 4 的函数并将其保存NaN.m在当前文件夹中。像上面那样定义向量会导致MATLAB 无法理解为一个 constant,并且会查找一个函数,根据 MA​​TLAB 的习惯用法,该函数应该全部小写[3.7, 1.2, 4.0, 3.1] NaN

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

于 2013-01-10T22:32:08.083 回答
2

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

对于非数字:始终使用NaN(除了组合,例如isnan()

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

推导自:

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

help nan: NaN(N) 是 NaN 的 N×N 矩阵。

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

于 2013-01-11T12:42:13.107 回答