登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 /xin村儿/ 于 2014-6-15 21:43 编辑
今天运算遇到了NaN, 以为程序出错,各种修改无果,找到了ta,特分享如下:
#fortran学习笔记主页 http://hi.baidu.com/tag/fortran%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/feeds
有做编辑调整 NaN: not a number 这个东西还是超级有用的。 比如现在,我有在一个格点数据,只需要计算其中一部分区域的数值,如果计算值为 “not a number”的地方,Fortran就直接将计算结果赋值为NaN,这样后续程序调用它就老是出错,该怎么办呢? ——用 ISNAN 函数判断。 isnan(x)是判断x是否是NaN类函数,返回ture、false。 举例:设x是原始数据,t是结果数据 if ( isnan(x) ) then x=-999 !判断出x为NaN,那么将x赋值为缺测值-999 else 进行计算 end if 顺便说,Hadisst1的海温资料在剔除陆地上的缺测值后,求距平时没问题,但有少数格点在标准化时会变成NaN. ======================缺测的补充分割线============================ 本方法来自小强。(他还真是叮当猫啊。。。)
undef=... do i=1,N if(x(i)...) then ...=-999 !!!undef end if end do 把符合条件的值设置为缺测。 缺测! undef! ==================来自梅梅姐的补充分割线=============================== 每一步计算都要把陆地剔除掉不算,最后陆地上的值还是undefine的值
梅梅姐的程序里是这样写的: do !各种do循环
if(ght(i,j,k).eq.-999.0) then ghtm(i,j)=-999.0 !是把陆地值设为-999.0 else 做需要的计算 endif enddo ====================总结分割线========================================== 其实都一样的嘛,if判断。 只是,千万要注意陆地值的设置~!
|