登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册 
 
 
 
x
 
要处理的数据是一组用电量的日数据 (10年,2004-2013年 共计3653个数据),研究的目的是要看用电量和气象条件的关系,找出天气现象和用电量关系的阈值,用电量的数据存在一个周期,即周一至周五用电量量少,周六和周日激增的问题,因此这个自然的7天周期要去掉,就牵扯到了滤波的问题。 查看《气象统计分析与预报方法》(黄嘉佑)上面关于滤波的介绍。滤波分为低通滤波,高通滤波,和带通滤波。因为我最后是想去掉日数据的7天周期,但是7天相对于3653个数据来说,频率相当高,因此觉得应该是用低通滤波,从网页(http://www.baidu.com/link?url=h9zcDoS2d98cI-A7CZohLM_t70Byne-VLNGsRDD5W_gqCnoZUi40Gn_JeJBq1cw_)上下载了李建平的 程序(原始程序如下),把里面的数据n=3653,m=7,c=2.15,结果出来的数据,就是一个悲剧。之前没有接触过滤波,对这方面不懂,想请教各位,我对10年的日数据序列进行7天的滤波,采用低通滤波对吗?另外,我把李老师程序的n ,m, c 这样改对吗? 如果不对,应该怎么做呢?最后说明一下,我只是想把这10年的日数据序列7天的波动周期滤掉,最好不要平滑太多,因为最后还是要用这个日数据对应气象条件,求出天气现象和用电量关系的阈值。此外看论坛上面,还有用小波进行滤波的,但是不会用,请做过相关内容的大神们多多指教。 以下是这个程序 高斯低通滤波器 M-term Guassian-Type Filter  |   |   | 求序列x(n)(n是资料长度)的m项高斯低通滤波序列y(n)  |  
       c-----*----------------------------------------------------6---------7--       subroutine guassfilter_2(n,m,x,y) c     M-term Guassian-Type Filter c     Input variables: n, x(n), m c        m: the term number used to running mean c           it must be an odd number. c     Output variables: y(n),z(n-m-1) c        y: the filtered series of x. c     Work parameters and array: c, cgm and ck(-(m-1)/2:(m-1)/2) c        c: a tunable parameter, generally, c>2.0. c      cgm: variance of Guassian distribution. c     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=-9.99e33       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      |