- 积分
- 114
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2022-3-17
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2022-3-23 19:16:51
|
显示全部楼层
- ;*************************************************
- load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
- load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
- load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
- load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
- ;*************************************************
- begin
- ;*************************************************
- ; open file and read in data: data are on a gaussian grid
- ;*************************************************
- yrS = 1950
- yrE = 2021
- nt = yrE - yrS + 1
- f1=addfile("D:\thesis\data\calculate\RAWdata\Removenino34.nc","r")
- IEASM=f1->SDIEASM_IA ;去除了趋势,年代际信号,nino34指数
- f2=addfile("D:\thesis\data\calculate\RAWdata\precIavnoENSO.nc","r")
- precip=f2->precIavnoENSO
- lat=f2->latitude
- lon=f2->longitude
- ny = dimsizes(lat)
- nx = dimsizes(lon)
- ;计算不同时间段内的回归场
- reg_precip_IEASM_first = regCoef(IEASM(0:21) , precip(latitude|:, longitude|:, time|0:21)) ;from 1950 to 1971
- reg_precip_IEASM_second = regCoef(IEASM(22:71) , precip(latitude|:, longitude|:, time|22:71)) ;from 1972 to 2021
- reg_precip_IEASM_first!0="lat"
- reg_precip_IEASM_first!1="lon"
- reg_precip_IEASM_first&lat=lat
- reg_precip_IEASM_first&lon=lon
- copy_VarCoords( reg_precip_IEASM_first , reg_precip_IEASM_second)
- ;print(reg_precip_IEASM_first(40:50,50))
- ;计算第一时间段内的检验场
- df = new((/ny*nx/),"float",precip@_FillValue)
- tval = new((/ny*nx/),"float",precip@_FillValue)
- b = new((/ny*nx/),"float",precip@_FillValue)
- df = reg_precip_IEASM_first@nptxy-2 ;degrees of frerdom
- tval = reg_precip_IEASM_first@tval
- b = tval
- b = 0.5
- prob = betainc(df/(df+tval^2),df/2.,b)
- prob = (1.-prob)*100
- precip_first_test = new((/ny,nx/),"float",precip@_FillValue)
- do i=0,nx-1
- do j=0,ny-1
- precip_first_test(j,i) = prob(nx*j+i)
- end do
- end do
- ;++++++++
- delete(df)
- delete(tval)
- delete(b)
- delete(prob)
- copy_VarCoords( reg_precip_IEASM_first , precip_first_test )
- ;选取通过95%信度检验的场
- reg_precip_IEASM_first_95 = mask(reg_precip_IEASM_first,(abs(precip_first_test).ge.95),True)
- ;++++++++
- copy_VarCoords( reg_precip_IEASM_first , reg_precip_IEASM_first_95 )
- print(reg_precip_IEASM_first_95(50:70,70))
- ;计算检验第二时间段内的检验场
- df = new((/ny*nx/),"float",precip@_FillValue)
- tval = new((/ny*nx/),"float",precip@_FillValue)
- b = new((/ny*nx/),"float",precip@_FillValue)
- df = reg_precip_IEASM_second@nptxy-2 ;degrees of frerdom
- tval = reg_precip_IEASM_second@tval
- b = tval
- b = 0.5
- prob = betainc(df/(df+tval^2),df/2.,b)
- prob = (1.-prob)*100
- precip_second_test = new((/ny,nx/),"float",precip@_FillValue)
- do i=0,nx-1
- do j=0,ny-1
- precip_second_test(j,i) = prob(nx*j+i)
- end do
- end do
- ;++++++++
- delete(df)
- delete(tval)
- delete(b)
- delete(prob)
- copy_VarCoords( reg_precip_IEASM_second , precip_second_test )
- ;选取通过95%信度检验的场
- reg_precip_IEASM_second_95 = mask(reg_precip_IEASM_second,(abs(precip_second_test).ge.95),True)
- ;++++++++
- copy_VarCoords( reg_precip_IEASM_second , reg_precip_IEASM_second_95 )
- ;print(reg_precip_IEASM_second_95(:,90))
- ;存入文件
- outfile ="./IEASM_precip.nc"
- system ("rm -f " + outfile)
- fout=addfile(outfile,"c")
- filedimdef(fout, "time", -1, True)
- fout->reg_precip_IEASM_first=reg_precip_IEASM_first
- fout->reg_precip_IEASM_first_95=reg_precip_IEASM_first_95
- fout->reg_precip_IEASM_second=reg_precip_IEASM_second
- fout->reg_precip_IEASM_second_95=reg_precip_IEASM_second_95
- end
复制代码 |
|