基本信息
源码名称:气象EOF分解
源码大小:79.83M
文件格式:.nc
开发语言:Python
更新时间:2024-05-31
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
对中东太平洋海温进行EOF分解,画出第一模态和第一模态系数
def eof(dat,opt=0):
n,xi,yi=np.shape(dat)
dat =dat.to_numpy()
an =np.tile(np.mean(dat,axis=0),(n,1,1))
sd=np.tile(np.std(dat,axis=0),(n,1,1))
if opt==0:
dat0= dat-an
elif opt==1:
dat0=(dat-an)/sd
else:
dat0=np.array(dat)
dat=np.reshape(dat0,[n,xi*yi])
msk =np.isnan(dat[0,:])
datn=dat[:,~msk]
n=datn.shape[0]
xn=datn.shape[1]
p=min(n,xn)
if p==n:
A=np.dot(datn,datn.T)
else:
A=np.dot(datn.T,datn)
# 计算特征值和特征向量
lamd, u=np.linalg.eigh(A)
#计算主成分系数
if p==n:
v =np.dot(datn.T,u)/np.tile(np.sqrt(np.abs(lamd)),(xn,1))
else:
v=u
Z=np.dot(datn,v)
v=v[:,::-1]
Z=Z[:,::-1]
pcvar=lamd/np.sum(lamd)*100.
V =np.zeros(dat.shape).T
V[msk,:]=np.nan
V[~msk,:]=v
return V,pcvar,Z
对中东太平洋海温进行EOF分解,画出第一模态和第一模态系数
#eof分解
def eof(dat,opt=0):
n,xi,yi=np.shape(dat)
dat =dat.to_numpy()
an =np.tile(np.mean(dat,axis=0),(n,1,1))
sd=np.tile(np.std(dat,axis=0),(n,1,1))
if opt==0:
dat0= dat-an
elif opt==1:
dat0=(dat-an)/sd
else:
dat0=np.array(dat)
dat=np.reshape(dat0,[n,xi*yi])
msk =np.isnan(dat[0,:])
datn=dat[:,~msk]
n=datn.shape[0]
xn=datn.shape[1]
p=min(n,xn)
if p==n:
A=np.dot(datn,datn.T)
else:
A=np.dot(datn.T,datn)
# 计算特征值和特征向量
lamd, u=np.linalg.eigh(A)
#计算主成分系数
if p==n:
v =np.dot(datn.T,u)/np.tile(np.sqrt(np.abs(lamd)),(xn,1))
else:
v=u
Z=np.dot(datn,v)
v=v[:,::-1]
Z=Z[:,::-1]
pcvar=lamd/np.sum(lamd)*100.
V =np.zeros(dat.shape).T
V[msk,:]=np.nan
V[~msk,:]=v
return V,pcvar,Z