6.6 NaN 数据

NaN,全称 Not-a-Number。

在数据处理或绘图时,经常会遇到某个数据点丢失或未赋值的情况。遇到这种情况,以前的做法是给这一点赋一个特殊值(比如 -9999.99 )来表明这个数据点有问题,但这样的解决办法并不完美,因为有时 -9999.99 或其他选定的数依然可能是一个合理值,进而导致数据处理时出现问题。

更现代的解决办法时使用 IEEE 规定的 NaN 来表示某个数据点丢失或未赋值。从数学上来说,当你进行一些未定义的数学操作(比如 0/0)的结果就是 NaN,在 ASCII 文件中,用字符 NaN 表示 NaN。

NaN 值在程序内部会以一种特殊的bit pattern 进行保存,因而程序可以很容易识别一个数据是否是 NaN。在 C 中,标准库函数 isnan 即用于测试某一个浮点数是否是 NaN。

GMT 会在数据处理以及绘图时对 NaN 数据进行检测:

  • 若值为 NaN 的数据出现在计算中,则结果也是 NaN
  • 值为 NaN 的数据,则在绘图时通常不绘制该数据点,或者为NaN数据指定专门的颜色

若输入数据的 X 或 Y 列中包含 NaN 值,通常该记录会在读入过程中被跳过。而实际上,这些 NaN 记录可以根据 IO_NAN_RECORDS 的取值不同而有两种解释。