爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9504|回复: 8

[其他] 求助,Butterworth滤波末端序列变得很小

[复制链接]
发表于 2016-5-18 21:09:14 | 显示全部楼层 |阅读模式

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

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

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的值

东太平洋(0°,120W)为例,201501-201602的SSTA的值
密码修改失败请联系微信:mofangbao
发表于 2016-5-19 09:26:26 | 显示全部楼层
就是这么小的,末端数据不能用的。因为滤波都会损失数据,而butterworth滤波虽然得到的序列是完整的,但是两端数据也是它估计出来的是不能用的。具体多少个数不能用取决于你滤波的频段
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-5-19 11:33:54 | 显示全部楼层
泌泌 发表于 2016-5-19 09:26
就是这么小的,末端数据不能用的。因为滤波都会损失数据,而butterworth滤波虽然得到的序列是完整的,但是 ...


受教了,对BW滤波了解不多,之前只知道有损但两端会保留,没想到还是不能用。多谢~
密码修改失败请联系微信:mofangbao
发表于 2016-5-19 20:02:36 | 显示全部楼层
兰先生 发表于 2016-5-19 11:33
受教了,对BW滤波了解不多,之前只知道有损但两端会保留,没想到还是不能用。多谢~

建议把序列选长一点
密码修改失败请联系微信:mofangbao
发表于 2017-1-3 14:43:47 | 显示全部楼层
泌泌 发表于 2016-5-19 09:26
就是这么小的,末端数据不能用的。因为滤波都会损失数据,而butterworth滤波虽然得到的序列是完整的,但是 ...

请移步~~~~~

求助 滤波  急~
http://bbs.06climate.com/forum.p ... 2&fromuid=22714
(出处: 气象家园)
密码修改失败请联系微信:mofangbao
发表于 2017-1-3 16:51:51 | 显示全部楼层
qq469015280 发表于 2017-1-3 14:43
请移步~~~~~

求助 滤波  急~

链接不完整
密码修改失败请联系微信:mofangbao
发表于 2017-1-3 19:26:11 | 显示全部楼层
密码修改失败请联系微信:mofangbao
发表于 2020-6-15 22:03:00 | 显示全部楼层
泌泌 发表于 2016-5-19 09:26
就是这么小的,末端数据不能用的。因为滤波都会损失数据,而butterworth滤波虽然得到的序列是完整的,但是 ...

请问不能用的个数应该怎么计算呢,求教
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-10-30 17:31:00 | 显示全部楼层
不知道这个和阶数有没有关系,李建平老师用的2阶的Butterworth,ncl默认好像是6阶,而且我也觉得最后几个数据不能要
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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