Exemple #1
0
def parameter():
	import eof
	year=eof.year()
	lat=eof.lat()
	myear=year.size
	mlat=lat.size
	return myear,mlat
Exemple #2
0
def cal(month,pres):
	import eof
	import subroutine
	import numpy as np
	import pylab as pl
	import matplotlib.pyplot as plt
	myear,mlat=eof.parameter()
	data=eof.get_data(month,pres)
	pm=eof.get_pm(month,pres)
	ano=subroutine.array_avestd(data,'ano') # 偏差場行列の計算
	cov=ano.transpose().dot(ano) # 共分散行列の計算
	eigen_value,eigen_vector=np.linalg.eig(cov) # 固有値・固有ベクトルを求める
	contribution_ratio=eigen_value/sum(eigen_value)*100
	lat=eof.lat()
	year=eof.year()
	mn=3							# 何番目のモードまで出力するか
	time_coe=np.ones((myear,mn))
	for i in range(0,mn):
		print eigen_value[i],contribution_ratio[i]
		print eigen_vector[i]
		for j in range(0,myear):
			time_coe[j,i]=sum(ano[j,:]*eigen_vector[:,i])

	# 各モード時系列プロット
	for i in range(0,mn):
		plt.plot(year,time_coe[:,i],label='mode'+str(i+1))
	plt.xlim(year[0],year[year.size-1])
	plt.legend()
	plt.savefig(pm+'_time-series.png')
	plt.show()
	# 各モード時系列プロット
	# 各モード緯度分布プロット
	for i in range(0,mn):
		plt.plot(lat,eigen_vector[:,i],label='mode'+str(i+1))
	plt.legend()
	plt.savefig(pm+'_lat-distribution.png')
	plt.show()