爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6019|回复: 8

[求助] 空间点的时间低频滤波问题,求达人们帮助啊

[复制链接]

新浪微博达人勋

发表于 2014-3-21 11:39:51 | 显示全部楼层 |阅读模式

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

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

x
要对全国夏季降水距平百分率各站点60-13年进行高斯滤波,也就是说每个站点都做一次时间上的滤波,我用下面的程序做出来了1000站的滤波结果,为了验证我又将其中的某站点作了单独的滤波,
可是两者滤波结果不一样,按理说应该是一样才对的啊!
难道要我每个站单独的作一维滤波么,那岂不是太浩大了点

PROGRAM stnFFTT
parameter(s1=1055,n1=54,m1=9)
dimension r(s1,n1),r1(s1,n1),x1(n1),y1(n1)
INTEGER i,sta(s1)
!----------------------------------------------------
        open(20,file='china-60-13-summer-pre-anomaly-percentage-stn.dat')
    do i=1,s1
            do j=1,n1
             READ(20,*)sta(i),r(i,j)
            enddo
        enddo
        close(20)
!--------------------------------------------------------
open(30,file='china-60-13-summer-pre-anomaly-percentage-stn1055-lvbo.dat')        
do  i=1,s1
    do j=1,n1
          x1(j)=r(i,j)
        call guassfilter_2(n1,m1,x1,y1)

           r1(i,j)=y1(j)
                 write(30,"(i8,f10.2)") sta(i),r1(i,j)
        enddo
enddo
end

!-------------------------------------------------
      subroutine guassfilter_2(n,m,x,y)
!     M-term Guassian-Type Filter
!    Input variables: n, x(n), m
!        m: the term number used to running mean
!           it must be an odd number.
!     Output variables: y(n),z(n-m-1)
!       y: the filtered series of x.
!     Work parameters and array: c, cgm and ck(-(m-1)/2:(m-1)/2)
!        c: a tunable parameter, generally, c>2.0.
!      cgm: variance of Guassian distribution.
!     By Dr. LI Jianping, April 6, 2001.

      dimension x(n),y(n)
      dimension xw((-(m-1)/2+1):(n+(m-1)/2)),ck(-(m-1)/2:(m-1)/2) !work array
      undef=3276.6
      pi=3.1415926
      c=2.15
      nl=(m-1)/2
      cgm=float(nl)/c

      x1=x(1)
      xn=x(n)

      if(x(1).eq.undef)x1=x(2)
      if(x(n).eq.undef)xn=x(n-1)
      do i=-nl+1,1
        xw(i)=x1
      enddo
      do i=2,n-1
        xw(i)=x(i)
      enddo
      do i=n,n+nl
        xw(i)=xn
      enddo
      c1=1./(cgm*sqrt(2.*pi))
      ck(0)=c1
      do 10 i=1,nl
        ck(i)=c1*exp(-i*i/(2.*cgm*cgm))
        ck(-i)=ck(i)
  10  continue
      do 20 i=1,n
        y(i)=0.
        do j=-nl,nl
          y(i)=y(i)+ck(j)*xw(i+j)
        enddo
  20  continue
      if(x(1).eq.undef)y(1)=undef
      if(x(n).eq.undef)y(n)=undef
      return
      end

已50136站为例,绿色是原始的多年pa,红色线条是单独做的滤波,而黑色曲线是我利用上面的程序做的结果,
虽然趋势大致一样,但是为什么这样啊,想不明白了~请求大神们帮助啊
图片2.png

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-3-21 13:41:53 | 显示全部楼层
自己调了调终于发现错误了,原来数据赋值出现错误了,改进的新程序


open(30,file='china-60-13-summer-pre-anomaly-percentage-stn1055-lvbo.dat')       
do 70 i=1,s
     do j=1,n1
          x1(j)=r(i,j)
        enddo

!        print*,x1(1:n1)
        do j=1,n1
        call guassfilter_2(n1,m1,x1,y1)
           r1(i,j)=y1(j)
                 write(30,"(i8,f10.2)") sta(i),r1(i,j)
        enddo

  70  continue

end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-9 20:57:04 | 显示全部楼层
你好,我也正在做类似的工作。请问你是先进行尺度分离然后分别eof么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-29 10:56:15 | 显示全部楼层
好东西 留个爪印
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-20 08:39:51 | 显示全部楼层
谢谢楼主 分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-19 10:39:46 | 显示全部楼层
{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-10-23 10:32:47 | 显示全部楼层
{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-10-23 10:32:54 | 显示全部楼层
{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-1-9 10:39:55 | 显示全部楼层
留爪,学习
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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