- 积分
- 1626
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-1-5
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2018-5-23 13:46 编辑
根据https://wenku.baidu.com/view/8d32e32058fb770bf78a5585.html提供的数据计算某流域径流量的小波分析,采用Morlet小波。w0取为5,脚本如下:
- def cpsai(t): #Morlet 小波函数
- w0 = 5
- a = cos(w0*t)*exp(-t*t/2)
- b = sin(w0*t)*exp(-t*t/2)
- a = a*(pi**(-0.25))
- b = b*(pi**(-0.25))
- return complex(a,b)
-
- n = 39 #样本量
- a = 32 #时间尺度因子
- m = 1
- datafn = 'F:\DataSet\sw.txt'
- swdata = asciiread(datafn, shape=(n,m))
- swdata = swdata - sum(swdata)/39 #距平化
- an = 32
- x = arange(0,n,0.5) #时间平移因子离散
- y = arange(0.5,a,0.5) #时间尺度因子离散
- an = len(y)
- bn = len(x)
- wf = zeros([an,bn])
- deltat = 1
- for b in arange(0,bn):
- for a in arange(0,an):
- s = 0
- for k in arange(0,n):
- s = s + swdata[k]*cpsai((k*deltat-x)/y[a])
- wf[a,b] = (deltat*s/sqrt(abs(y[a]))).real #小波系数
- #r = (deltat*s/sqrt(abs(y[a]))).real
- #i = (deltat*s/sqrt(abs(y[a]))).imag
- #wf[a,b] = sqrt(r*r+i*i) #小波变换的模
- print a,b
- xtick = arange(1966,1966+bn)
- ytick = arange(0,an)
- layer = contour(xtick,ytick,wf,15,smooth = True)
- clabel(layer)
- xlabel('b(Year)')
- ylabel('a')
- title(u'小波系数实部等值线图',fontname='宋体', fontsize=16)
|
评分
-
查看全部评分
|