| 
本帖最后由 /xin村儿/ 于 2014-6-15 21:43 编辑
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  
 
 今天运算遇到了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判断。 只是,千万要注意陆地值的设置~! 
 |