爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 32784|回复: 3

[其他] 极端降水的百分位法阈值计算ncl或fortran程序

[复制链接]
发表于 2021-4-6 22:24:16 | 显示全部楼层 |阅读模式
5金钱
求求大佬救救孩子叭

密码修改失败请联系微信:mofangbao
发表于 2021-4-12 16:40:43 来自手机 | 显示全部楼层
undef("percent_to_value")
function percent_to_value( \
  i_data           : numeric, \
  i_percentiles
: numeric  \
)
local None
begin

  retVal = new( dimsizes(i_percentiles), float )

  data1d = ndtooned( i_data )
  notMissing = data1d( ind(.not.ismissing(data1d) ) )

  qsort(notMissing)

  do p = 0, dimsizes(i_percentiles)-1
;   pInd = round( i_percentiles(p) * .01 * dimsizes(notMissing) + 0.5, 3 ) -1
;   pInd = where( pInd.ge.dimsizes(notMissing), dimsizes(notMissing)-1, pInd )
    floatInd = i_percentiles(p) * .01 * dimsizes(notMissing) - 0.5
    floorInd = toint( floor(floatInd) )
    floorInd = where( floorInd.lt.0, 0, floorInd )
    ceilInd = toint( ceil(floatInd) )
    ceilInd = where( ceilInd.ge.dimsizes(notMissing), \
        dimsizes(notMissing)-1, ceilInd )
;   print(pInd + " " + dimsizes(notMissing))
    if( ceilInd.eq.floorInd ) then
      retVal(p) = notMissing(floorInd)
    else
      retVal(p) = notMissing(floorInd) * ( ceilInd - floatInd ) \
          + notMissing(ceilInd) * ( floatInd - floorInd )
    end if
  end do

  return(retVal)
end ; percent_to_value
调用这个子程序就可以了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2021-6-3 10:38:42 | 显示全部楼层
YQY优优 发表于 2021-4-12 16:40
undef("percent_to_value")
function percent_to_value( \
  i_data           : numeric, \

请问能分享下原理吗?
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

发表于 2023-1-12 13:34:38 | 显示全部楼层
楼主解决了没?能否分享一些脚本
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表