It seems like both
Inf are exactly same in MATLAB (likewise
NaN, but not
Nan). Is there any difference?
>> which inf
>> which Inf
If they are the same, which one should be used in practice? For allocating arrays I have been using
x = inf(3,5) style following
ones being all small caps. For assigning single value, I use
x = Inf. Do you think this is a consistent use?
Here are the conventions that MATLAB appears to use:
For Not-a-Number: Always use
NaN (Except in combinations such as
For Infinite: Use
inf for the function and use
Inf for the value (and
INFs for multiples, but this is not a command of course). Note that this is a bit tricky as it means that the evaluation of
help Inf: inf(N) is an N-by-N matrix of INFs.
help nan: NaN(N) is an N-by-N matrix of NaNs.
help isnan: For example, isnan([pi NaN Inf -Inf]) is [0 1 0 0].
Most idiomatically consistent would be
inf but MATLAB offers you the alternative way of capitalizing
Inf, the way you will find it everywhere else, like in printouts, for example. Note that MATLAB is case sensitive. Nobody will use
InF, so MATLAB does not provide these "aliases".
For use in a data vector, as in
[3.7, 1.2, NaN, 3.1], I consistently find myself using
NaN as well, but the following experiment suggests very strongly that this use is not intimate with MATLAB's internal workings. Create a function
n = NaN() returning 4 and save it as
NaN.m in your current folder. Defining the vector like above will result in
[3.7, 1.2, 4.0, 3.1] showing that MATLAB does not understand
NaN as a constant, and will look up a function, which, in accordance with MATLAB idioms, should be spelled all lowercase.
Now let's quickly delete
NaN.m before we forget, and keep using
NaN in data columns.