Most arithmetic operations propagate NaN values, but max and min ignore them. For example 3+NaN and sum([3 NaN]) return NaN, but max(3, NaN) and max([3 NaN]) return 3.
Sometimes it is useful for max and min to behave like other arithmetic functions. For example, if you wish to set all the negative values in a vector to 0, using max(v, 0), you may not wish also to remove NaNs representing missing data points.
maxNan and minNan are functions which can be used in place of max and min but which return a NaN wherever a comparison with a NaN took place. The various combinations of arguments and results accepted by by max/min are also accepted by maxNan/minNan.
max([1 2 3; 4 NaN 0])
returns [4 2 3] but
maxNan([1 2 3; 4 NaN 0])
returns [4 NaN 3].
(Note that nanmax and nanmin in the statistics toolbox are the same as max and min.)
David Young (2019). Max and min keeping NaNs (https://www.mathworks.com/matlabcentral/fileexchange/44702-max-and-min-keeping-nans), MATLAB Central File Exchange. Retrieved .