IDL NAN 处理学习笔记

前言
  前天在写IDL程序的时候遇到了NAN,虽然实际问题没能解决,但是大概已经有点眉目了。顺便记下遇到NAN,INF这些可能的操作。
  NAN是not a number的缩写,在和浮点数比较的时候,它会出现警告,当时做的时候觉得反而是警告更好,NAN处理起来挺麻烦的。
MATLAB处理这些异常值时候挺熟练的,IDL度娘了半天没找到,只能自己读文档了,好在找到了文档。
  inf就是无穷,也可以进行处理。

创建这四种变量

a = !VALUES.F_NAN	;NAN
IDL> b =  -!VALUES.F_NAN	;-NAN
IDL> c = !VALUES.F_INFINITY	;INF
IDL> d = -!VALUES.F_INFINITY	;-INF

带感叹号的一般都是IDL系统的变量,所以其实这个只要知道应该就够了。比如你想把某个值去掉,那就改成这个值就行了,比如我想去除我VFC原来是背景的部分,那我就赋值。

在这里插入图片描述
还是比较清晰的,当然还有创建的方法,就是需要提前创建一个矩阵,比如,

a = [1.0,'inf','nan','-nan','-inf'] 
b = 1 
b = a[1]
b
c = 2
c = a[2]
c
a = ['inf','nan','-nan','-inf']
a

需要注意的是,在创建这四种数的时候一定要和浮点数创建在一个矩阵里面,那么会生成这四种数,然后单独抽出一种数就行,如果不抽出来就只能用之前的方法,而且必须要和浮点数在一个矩阵里,否则会被识别成文字矩阵。看下面:

在这里插入图片描述

浮点数造成的问题
  如果你不去除NAN或者INF与浮点数进行比较会出现2个问题

  1. 第一是会出现警告,即Program caused arithmetic error: Floating illegal operand
  2. 第二,它照样会运行下去,并且会给出比较的结果,比如返回0.
    例如

在这里插入图片描述

c为NAN,与为1的d比较会出现报错,并且返回值为0,那么在我比如我想去除背景的话很可能会将背景和等于0的部分混在一起,那么我只能到ENVI里用ROI裁剪掩膜赋值了。我觉得这个问题可能是IDL为了严谨,但实际上可能还是成了人们写IDL的一大阻力了。

如何判断是否是NAN或者INF
利用finite函数,句法的话
Result = FINITE( X [, /INFINITY] [, /NAN] [, SIGN=value])
判断某个数字是否是inf或者NAN,后面是可选参数。

在这里插入图片描述

a = [1.0,'inf','-inf','nan','-nan']
a
finite(a)
finite(a,/nan,sign=0)
finite(a,/inf,sign=1)
finite(a,/-inf,sign=1)        ;错误语法

可以看到,finite是有限的意思,如果true的话返回值是1,如果是false的话返回值是0,即如果一个数是有限的数的话那么返回的是1,不是的话就返回0。这个可以成为找下标的依据。
而如果加入了可选去找NAN的话,并且加入sign的话true返回1,false返回0,同理inf的可选参数。

从nan到数值的赋值或者返回nan
一旦你有临时的变量nan就不需要再用系统变量!VALUES.F_NAN这种形式了,你可以直接用’inf’来赋值,例如下面

a = [1.0,'inf','-inf','nan','-nan']
a
a[1] = 2
a[1] = 'inf'
a
d = 'inf'
d

在这里插入图片描述
可以看到其实已经是可以了,即如果在浮点的环境里你可以抽出一个变量,当成一种存储 NAN,INF 的变量,而如果单纯输入 ‘INF’ 的话出来的是一个字符串不会识别成 NAN 或者 INF,所以如果愿意的话可以一开始就存储一个这4个非数的变量,然后单独赋值就可以了。

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
遥感图像IDL处理是一种针对遥感图像进行处理和分析的软件工具。IDL是一种强大的编程语言,可以方便地对遥感图像进行处理、显示和分析。 首先,遥感图像IDL处理可以实现图像的读取和显示。通过使用IDL的图像处理函数和库,可以读取不同格式的遥感图像文件,并对其进行显示、放大、缩小等操作。这对于深入理解遥感图像的特征和内容非常重要。 其次,遥感图像IDL处理还能够实现遥感图像的增强和滤波。遥感图像往往包含大量的噪声和模糊信息,使用IDL的滤波算法可以有效地去除这些干扰,提取出真实的地物信息。此外,IDL还提供了一系列的增强算法,如直方图均衡化、对比度增强等,可以使遥感图像更加清晰和鲜明。 此外,遥感图像IDL处理还可以实现遥感图像的分类和分割。遥感图像包含了丰富的地物信息,通过使用IDL的分类和分割算法,可以将图像中的不同地物进行自动分离,并生成分类结果。这对于土地利用规划、自然资源管理等领域非常重要。 最后,遥感图像IDL处理还可以进行空间分析和建模。遥感图像提供的是地物在不同时间和空间上的信息,使用IDL可以进行空间分析,如提取地物的形状、面积等指标,并进行统计和建模。这对于环境变化监测、城市规划等具有重要的应用价值。 总而言之,遥感图像IDL处理是一项重要的技术,可以对遥感图像进行多方面的处理和分析。通过使用IDL,我们可以深入了解遥感图像的特征,提取地物信息,并进行空间分析和建模,为地理信息系统和遥感应用提供更有价值的数据和产品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值