爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 34219|回复: 17

[其他] 极端降水阈值求助

[复制链接]

新浪微博达人勋

发表于 2020-1-4 23:17:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
请问极端降水阈值有没有NCL的程序或者python的程序。95%百分位。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-1-5 15:27:49 | 显示全部楼层
http://www.ncl.ucar.edu/Applicat ... percentile_plot.ncl
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
    回复 支持 1 反对 0

    使用道具 举报

    新浪微博达人勋

     楼主| 发表于 2020-9-15 22:18:39 | 显示全部楼层
    杰西卡·芬 发表于 2020-9-13 11:17
    代码没看懂,楼主可以解释一下吗?

    我直接调用的,(1)load "/data1/***/***/***/box_percentile_plot.ncl";把ncl官网上的ncl脚本放在自己的路径下;(2)prec(j,i,k)=percent_to_value(pr(365*j:(365*j+364),i,k),95),然后做循环,,,你自己去ncl
    官网看吧
    密码修改失败请联系微信:mofangbao
    回复 支持 1 反对 0

    使用道具 举报

    新浪微博达人勋

     楼主| 发表于 2020-1-5 15:27:08 | 显示全部楼层
    已找到
    密码修改失败请联系微信:mofangbao
    回复

    使用道具 举报

    新浪微博达人勋

     楼主| 发表于 2020-1-5 15:28:59 | 显示全部楼层
    如果不是这个函数,请大家指正
    密码修改失败请联系微信:mofangbao
    回复 支持 反对

    使用道具 举报

    新浪微博达人勋

     成长值: 0
    发表于 2020-1-6 09:03:18 | 显示全部楼层
    这个程序并不难,计算出来序列的均值和方差就ok了,通过查表获得95%分为上面的值(1.96)就可以编写了
    abs(x(i)-x平均)>1.96*x方差,即可
    密码修改失败请联系微信:mofangbao
    回复 支持 反对

    使用道具 举报

    新浪微博达人勋

    发表于 2020-1-18 13:29:22 | 显示全部楼层
    感谢楼主!
    密码修改失败请联系微信:mofangbao
    回复

    使用道具 举报

    新浪微博达人勋

    发表于 2020-3-25 10:23:39 | 显示全部楼层
    感谢楼主!
    密码修改失败请联系微信:mofangbao
    回复

    使用道具 举报

    新浪微博达人勋

    发表于 2020-9-13 11:17:48 | 显示全部楼层
    代码没看懂,楼主可以解释一下吗?
    密码修改失败请联系微信:mofangbao
    回复 支持 反对

    使用道具 举报

    新浪微博达人勋

    发表于 2020-11-18 07:42:41 来自手机 | 显示全部楼层
    caojinqiu 发表于 2020-09-15 22:18
    我直接调用的,(1)load "/data1/***/***/***/box_percentile_plot.ncl";把ncl官网上的ncl脚本放在自己的路径下;(2)prec(j,i,k)=percent_to_value(pr(365*j:(365*j+364),i,k),95),然后做循环,,,你自己去ncl
    官网看吧

    你好啊,我运行的时候总是官网的脚本报错,Subscripts out of range 。真是不知道咋回事了
    密码修改失败请联系微信:mofangbao
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

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

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

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