爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 1166|回复: 7

[其他] 【求助】关于区域EOF和北半球EOF的区别

[复制链接]

新浪微博达人勋

发表于 2023-10-5 22:51:51 | 显示全部楼层 |阅读模式
20金钱
我用ncl和Python同样画10-90°N,0-360°E的EOF分析,但是这两个程序的结果差别很大所以想问一下区域EOF计算和半球EOF计算所用的方法是不一样的吗?
我看示例里面的指数一个是4.*atan(1.)/180.另一个是0.01745329
这两个结果似乎并不一样。


EOF.png

最佳答案

查看完整内容

这样就比较明显了,你用的是eofascorrelation而不是eof,可以在官方文档里看三种不同的eof介绍,他们在原理上是一样的,只是在结果表达上有不同: eofsAsCorrelation: Empirical orthogonal functions (EOFs) expressed as the correlation between the principal component time series (PCs) and the time series of the Eof input dataset at each grid point. eofsAsCovariance: Empirical orthogonal functions (EOFs ...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-10-5 22:51:52 | 显示全部楼层
萤火飞侠 发表于 2023-10-6 23:51
f_u = xr.open_dataset("D:/necp/vwnd.mon.mean.nc")
u = f_u['vwnd'].loc[f_u.time.dt.month.isin([3]) ...

这样就比较明显了,你用的是eofascorrelation而不是eof,可以在官方文档里看三种不同的eof介绍,他们在原理上是一样的,只是在结果表达上有不同:
eofsAsCorrelation:
Empirical orthogonal functions (EOFs) expressed as the correlation between the principal component time series (PCs) and the time series of the Eof input dataset at each grid point.
eofsAsCovariance:
Empirical orthogonal functions (EOFs) expressed as the covariance between the principal component time series (PCs) and the time series of the Eof input dataset at each grid point.
eofs:
Empirical orthogonal functions
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-10-6 10:11:37 | 显示全部楼层
4.*atan(1.0)/180.就等于0.01745329,应该不是这个的影响。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-10-6 15:23:49 | 显示全部楼层
你把python代码贴上来啊,python里面太多eof库了,甚至同一个库的命令中还有很多相关的参数,参数不一样结果也就不一样,有一些用法容易混淆
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-10-6 23:51:14 | 显示全部楼层
名字真难取 发表于 2023-10-6 15:23
你把python代码贴上来啊,python里面太多eof库了,甚至同一个库的命令中还有很多相关的参数,参数不一样结 ...

f_u = xr.open_dataset("D:/necp/vwnd.mon.mean.nc")
u = f_u['vwnd'].loc[f_u.time.dt.month.isin([3])].loc['1961-03-01':'2020-04-01']
u_lat_lon0 = u[:,9,0:33,0:144]#9:200;5:500
lat_u = f_u['lat'].loc[90:10]
lon_u = f_u['lon'].loc[0:360]
u_lat_lon = np.array(u_lat_lon0).reshape(60,33,144)

eof = Eof(u_lat_lon)
u_eof = eof.eofsAsCorrelation(neofs=4)
u_pc = eof.pcs(npcs=4, pcscaling=0)
u_var = eof.varianceFraction(neigs=4)
years = range(1961, 2021)
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-10-9 22:43:43 | 显示全部楼层
名字真难取 发表于 2023-10-7 12:35
这样就比较明显了,你用的是eofascorrelation而不是eof,可以在官方文档里看三种不同的eof介绍,他们在原 ...

那请问ncl里面的EOF用的是哪一个呢?是第三个吗?
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-10-10 12:51:48 | 显示全部楼层
萤火飞侠 发表于 2023-10-9 22:43
那请问ncl里面的EOF用的是哪一个呢?是第三个吗?

自己试一试吧,好久没用ncl我也忘了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2023-10-17 16:39:05 | 显示全部楼层
ncl会在eof前自己距平,你python在计算前也距平了吗?没有的话肯定不一样啊
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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