登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
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 |