似乎inf
和Inf
在MATLAB中完全相同(同样为nan
和NaN
,但不是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
。你认为这是一贯的使用吗?
答案 0 :(得分:12)
大多数惯用的一致性都是nan
和inf
,但MATLAB为您提供了大写NaN
和Inf
的替代方式,您可以在其他地方找到它,例如例如,在打印输出中。请注意,MATLAB 区分大小写。没有人会使用Nan
或InF
,因此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似乎使用的约定:
非数字:始终使用NaN
(isnan()
对于无限:使用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]。