在matlab中以下情况会出现NaN:任何关于NaN的数值运算, 如sqrt(NaN)加减法, 如(+Inf)+(-Inf)乘法, 如0乘以Inf除法, 如0/0、Inf/InfRemainder, 比如rem(x, y)其中y为0或x是Inf。两个NaN并不相等。语法格式:NaN('double') 和没有参数的NaN是一样的。NaN('single') 是单精度表达式(single precision representation)的NaNNaN(n)返回一个n*n的由NaN构成的矩阵。NaN(m,n) or NaN([m,n])返回一个m*n的由NaN构成的矩阵。NaN(m,n,p,...) or NaN([m,n,p,...]) 返回一个m*n*p*...的数组。其中m、n、p、……都应该是非负的。一个负数会被当做0处理。NaN(...,classname)相关: isnan、inf、nan、isinf程序示例>> Inf / Infans = NaN>> 0 * Infans = NaN>> NaN == NaNans = 0>> NaN ~= NaNans = 1经常用在下面两种情况1.数据处理时,在实际工程中经常数据的缺失或者不完整,此时大家可以将那些缺失设置为nan,Matlab处理缺失的数据时就会跳过或者其他处理——这个是Matlab优越于其他语言的表现之一。另外但读取数据时,某个字符不是数据,那么Matlab自动将它认为nan处理比如Matlab中提供的nanmean, nanmax, nanmin, nanstd, nansum, nanvar这么多函数可以处理包含nan的数据2.还有就是绘图的时候,如果大家想挖掉一部分,那么nan就起作用了比如大家要绘制z=x^2+y^2在[-10 10]区域的图形但是要挖掉x大家看看如何操作[code][x,y]=meshgrid(-10:0.1:10);z=x.^2+y.^2;subplot(121)mesh(x,y,z)sel=x