基本信息
源码名称:气象EOF分解
源码大小:79.83M
文件格式:.nc
开发语言:Python
更新时间:2024-05-31
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍
对中东太平洋海温进行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