爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12051|回复: 2

[源代码] python求落后交叉相关系数

[复制链接]

新浪微博达人勋

发表于 2018-5-5 15:40:59 | 显示全部楼层 |阅读模式

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

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

x
  1. import numpy as np
  2. from math import sqrt

  3. import matplotlib.pyplot as plt

  4. #求落后交叉相关系数

  5. zry=[]

  6. zrw=[]

  7. for j in range(1,10):

  8. def s(a,b):#协方差

  9. avofa=0.0

  10. avofb=0.0

  11. sumofab=0.0

  12. for i in range(len(a)):

  13. avofa+=a[i]/20.

  14. for i in range(len(b)):

  15. avofb+=b[i]/20.

  16. for i in range(len(a)-j):

  17. temp=(a[i]-avofa)*(b[i+j]-avofb)

  18. sumofab+=temp/(len(a)-j)

  19. return sumofab

  20. def variance(a):#平方的期望-期望的平方

  21. s1=0;

  22. s2=0;

  23. for i in a:

  24. s1+=i**2;

  25. s2+=i;

  26. return float(s1)/len(a)-(float(s2)/len(a))**2

  27. def r(a,b):#落后交叉相关系数

  28. return s(a,b)/sqrt((variance(a)*variance(b)))



  29. f1=open('F:\\shixi3\\shixi312.txt')

  30. data1=f1.readlines()

  31. f1.close()

  32. f2=open('F:\\shixi3\\shixi31.txt')

  33. data2=f2.readlines()

  34. f2.close()

  35. f3=open('F:\\shixi3\\shixi32.txt')

  36. data3=f3.readlines()

  37. f3.close()



  38. ave12=[]

  39. ave1=[]

  40. ave2=[]

  41. for i in range(0,20):

  42. temp1=data1[i]

  43. temp2=data2[i]

  44. temp3=data3[i]

  45. ave12.append(float(temp1.split()[0]))

  46. ave1.append(float(temp2.split()[0]))

  47. ave2.append(float(temp3.split()[0]))

  48. # print 'j=',j

  49. # print r(yearave),',',r(winterave)

  50. zry.append(float(r(ave12,ave1)))

  51. zrw.append(float(r(ave12,ave2)))

  52. #print zry,zrw

  53. x=np.linspace(1,9,9)

  54. y=np.linspace(-0.4,0.4,9)

  55. cp=plt.plot(x,zry,marker='.',c='black',markersize=10,label='Month12 and month1')

  56. cp=plt.plot(x,zrw,marker=6,c='gray',markersize=10,label='Month12 and month2')



  57. for i in range(0,len(zry)):

  58. plt.text(x[i],zry[i]+0.005,'%.02f' %zry[i],ha='center',va='bottom',color='black',fontsize=9)

  59. for i in range(0,len(zrw)):

  60. plt.text(x[i],zrw[i]+0.005,'%.02f' %zrw[i],ha='center',va='bottom',color='gray',fontsize=9)

  61. plt.title('Backwardness cross correlation coefficient with different lag length',fontsize=10)

  62. plt.xlabel('Lag Length',fontsize=10)

  63. plt.ylabel('Backwardness cross correlation coefficient',fontsize=10)



  64. plt.legend()

  65. plt.show()
复制代码

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

新浪微博达人勋

发表于 2018-5-5 19:03:37 | 显示全部楼层
不知道 python要对齐吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-5-6 08:58:07 | 显示全部楼层
又是那隻貓 发表于 2018-5-5 19:03
不知道 python要对齐吗

不要对齐,我好像复制的时候出现了一些问题。。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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