- 积分
- 1586
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-12-3
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 兰先生 于 2016-5-18 21:11 编辑
本人之前在对数据进行bw滤波处理的时候,发现自己数据序列的最后几个值都很小,看程序也似乎没有什么问题,想不通问题究竟出在脚本还是什么其他。希望有经验的朋友帮忙解答。
具体过程是使用ERSST的195001-201602的月平均资料先去线性趋势,然后求出距平值,最后做的6-96个月的滤波,各个点所得结果在最后几个都会变小。以东太平洋(0°,120W)为例,201501-201602的SSTA的值见图,最后5个月接近0,然而事实上那会儿是El nino峰值期应该是大值才对。本人换用其他数据和变量也出现相似的结果。
附上脚本。
begin
f1 = addfile("/cygdrive/d/test/data/sst.mnmean.v4.nc","r")
f2 = addfile("/cygdrive/d/test/data/precip.mon.mean.nc","r")
;sst:1854年1月-2016年2月 prec:197901-201602 气候态取1979-2008
t1 = f1->time ;sst's timeline
x1 =f1->sst
sst = dtrend_msg_n(t1,x1,False,False,0)
copy_VarMeta(x1,sst)
yyyymm1 = cd_calendar(t1,-1)
;计算气候态
clstart1 = ind(yyyymm1.eq.197901)
clend1 = ind(yyyymm1.eq.200812)
clsst = clmMonTLL(sst(clstart1:clend1,:,:))
;计算异常
ostart1 = ind(yyyymm1.eq.195001)
oend1 = ind(yyyymm1.eq.201512)
asst = calcMonAnomTLL(sst(ostart1:oend1,:,:),clsst)
;printVarSummary(asst)
at = new((/794,89,180/),"float")
dstart1 = ind(yyyymm1.eq.201601)
dend1 = ind(yyyymm1.eq.201602)
dt = sst(dstart1:dend1,:,:)
at(0:791,:,:)=asst
do i = 0,1
at(792+i,:,:) = dt(i,:,:)-clsst(i,:,:)
end do
at&time = yyyymm1(ostart1:dend1)
;printVarSummary(at)
;bandpass-----------------
ca = 96.0 ; band start (longer period)
cb = 6.0 ; band end
fca = 1.0/ca ; 'left' frequency
fcb = 1.0/cb ; 'right' frequency
opt = False
bat = bw_bandpass_filter (at,fca,fcb,opt,0) ; (ua,fca,fcb,)
copy_VarMeta(at,bat)
printVarSummary(bat)
|
-
东太平洋(0°,120W)为例,201501-201602的SSTA的值
|