图像缩略图

EOF

1.2版(14.6 MB)通过 查德·格林
为时空分析量身定制的经验正交函数,附带教程。

60个下载

更新2019年7月9日

查看许可证

这EOF函数的独立版本不再被保留。它仍然能正常工作,但你会发现最先进的最新版本的气候资料MATLAB工具箱在这里://www.tatmou.com/matlabcentral/fileexchange/70338. 如果eof函数对您有用,请引用我们的MATLAB论文气候数据工具箱!

该函数简化了将经验正交函数(时空主成分分析)应用于气候数据等三维数据集的过程。EOF分析并不是很难实现,但通常需要花费大量时间来研究如何重塑一个大的3D数据集,获取EOF,然后取消重塑。此函数为您完成所有的整形,并以计算效率高的方式执行EOF分析。该分析方法是Guillame迷宫功能量表方法2的一个简化和优化版本。

有关如何对气候数据执行EOF分析的完整说明和深入教程,请单击上面的示例选项卡。

引用为

Greene,C.A.,Thirumalai,K.,Kearney,K.A.,Delgado,J.M.,Schwanghart,W.,Wolfenbarger,N.S.等人。(2019年)。用于MATLAB的气候数据工具箱。地球化学,地球物理学,地球系统,20。https://doi.org/10.1029/2019GC008392

评论和评分(39个

杰森李

美林杨

嗨,查德,

伟大的代码!

你可以添加一个“旋转” EOF功能本功能?旋转后的EOF是在大型分析领域绎主导模式是有用的。

谢谢。

熊睿

卢比

白嘉义

Thans分享^ - ^。

ZY

罗家顺

罗家顺

妮可Paloschi

yasna拉扎维

高世达

查德·格林

今天起新的更新响应已在此评论部分提出了一些问题:

一。有时复杂的解决方案的问题现在已经解决了。以前,对于一些高阶模态(金宝搏官方网站例如,在790模式附近以及在求解800多个模态时更高),特征值非常小,以至于除了数值噪声之外什么也没有。自然,一些数值噪声是负的,这导致了复杂的eof图和所有模式的主成分,以适应这些少数高阶复杂模式。eof函数现在将所有负特征值强制为零,从而防止结果变得复杂。

2.“方差的百分比说明”不再圆形。此前,曾有所用fix命令四舍五入每个值下调至最接近第十位线,以及从以往等于100.在哲学这是一个有点傻,让EOF功能全面一些任意值防止总和(expv),所以如果你想圆你的解释方差你现在就必须自己做。由于阿尔特Zwaan酒店鉴别这个问题。

3.我已经增加了一节的教程就如何解释方差的百分比解释。

查德·格林

@阿尔特,这是个很好的建议。我将在下一次更新中进行更改。谢谢你追踪。

嗨,
非常好的,有用的功能。
唯一的,这是怪我是为什么修复()用于expv。这导致累积解释方差不等于100%。我会建议改变定位点()到圆()。

久强赵

大家好,
我一直试图通过计算采样误差来定义模式的重要性,即lambda(2/N)^1/2,其中lambda是特征值,N是实现次数(North等人。有人知道如何计算抽样误差吗。

大家好,
我一直在试图产生AO / AAO指数由中共所描述的,没有人知道我该怎么办项目距平场产生伪电脑。谢谢

李悦

嗨,查德,

我也测试代码在你的例子,我发现我知道由孙巧于2017年5月4日和郝国2017年6月15日提出的问题。

他们声称,在示例代码中有复杂的双重结果。其理由是因为,excuting代码之后 'SST = detrend3(SST,T);'在PC行的顺序似乎被颠倒。即,在第一模式(expv = 36.5)最多显示的最后一行中在PC(R:802)。我怕他们被描述的误导“PC(1,:)是时间序列变异性特性的第一(主导)的模式。”其实,他们应该检查expv为其中第一个模式是在PC上,正确的顺序。

曾志祥

可以ZU

嗨网速慢,
其实,我是M文件,而不是作者的用户之一。它们由乍得格林写道。
我已经通过这些代码进行分析SST。我可以回答你的问题。
在您的三个例子中,常见的疑问是,何时以及为什么要乘“-1”。
你并不需要乘“-1”。在SST例子中,乘以“-1”仅仅是Messie和Chavez的(2011)的结果进行匹配。
在这里,你应该注意到,乘以“-1”是eof_maps和PC在同一时间。例如,在三种情况下,第一EOF模式乘“-1”。因此,在同一时间的PC1乘法“-1”。或者,如果你不想在Messie和查韦斯(2011年)的纸张相符,你不需要乘“-1”。的EOF1 * PC1(乘)的结果是一样的。
最好的,
能够

苏曼Maity

嗨可以ZU
我不明白你的关于(-1)的乘法想法。正如我也明白了,你想匹配图Messie和查韦斯(2011年)。请尽量清楚地阐述了这些下列查询:
1)在eof.m的代码,有
%%翻转迹象,以提供一致的结果:
ind=符号(pc(:,1))<0;
eof_maps(:,:,IND)= eof_maps(:,:,IND)*( - 1);
PC(IND,:) = PC(IND,:)* - 1;
这一部分是一般性的还是以某种方式与梅西和查韦斯(2011)的结果相匹配?我是说,对于任意数据,是否需要更改?

2)在这个例子中你提到
S = [1 -1 -1 1 -1 1];%(登录乘数匹配Messie和2011 Chavez的)
这个“s”与前6个eof相乘。
无论这部分是一般或以某种方式与Messie和查韦斯(2011)的结果一致?我的意思是任意的数据我怎么会决定哪一个与“-1”,哪一个是“1”相乘?什么其他人呢?

3) 在你提到的另一部分
异常(T,-pc(1,:))%第一主成分是ENSO

这是一般性的还是以某种方式与梅西和查韦斯(2011)的结果相匹配?我是说,对于任意数据,如何决定-1是否应该乘以?是否应该将-1乘以每台pc?
请尽量澄清上述问题。我的目的不是匹配梅西和查韦斯(2011)的数据,而是了解我能为我的数据做些什么。以上三种情况请明确答复。

关于
苏曼

可以ZU

我想知道空间数据需要乘以权重。

嗨,
我加载了“PacOcean”,当使用代码“[eof_maps,pc,expv]=eof(sst)”时出现了一个简单的问题:
下标分配尺寸不匹配。
为什么?矩阵(sst)采用3d格式(lat、lon、时态数据)。
请帮帮我!

可以ZU

嗨网速慢,
(1)。[12个月一年四个季节。
(2).As we know,the sun reaches the tropic of cancer once a year in the northern hemisphere and vice versa in the southern hemisphere.It means the period of positive sst phase is semi-annual i.e. 6 months.And in the one cycle , it includes the positive sst phase and negative sst phase in one hemisphere. In this cycle, it is sst change of ditterent months,i.e. seasonal singal. The annual signal is for the change of different years.If you want to get it,you can do the 12-months running average(some papers use the method) i.e. nonseasonal singal.
(3) 。在代码中,它将-1与PC和EOF模式相乘。你不需要这么做。结果是一样。自从信号是PC和EOF模式的乘积,即PC1xModel1,乘以“-1”或不改变信号。
最好的,

苏曼Maity


可以ZU
非常感谢您的回答。我不明白你是如何讲述一个赛季由12个月,即,一个一年?据我所知,印度有定义为四个季节:冬季:1 - 2月,预季风季节:三月至五月,西南季风季节:六月至九月,邮政季风季节:10至12月。您将要一年的时间平均为一个赛季?
我的第二个问题是“半年”是什么意思?有6个月(即0.5年)的期限吗?但是在这里所示的例子中描绘了1个周期/年,即具有周期1年(即12个月)的信号,因此它是一个年度信号。如何区分?
第三个问题是关于负号。在这个例子中,与-1相乘是为了满足梅西和查韦斯(2011)这个数字。我在代码中看到与“-1”相乘完成。我的问题是是否需要-1乘法?如果我正在处理其他数据集,那么它是必需的吗?如何决定应该倍增哪种模式?对于一个特定的模式,需要将-1与PC和EOF相乘吗?
请clarrify这些查询。
问候
苏曼

我想指出一些奇怪的行为(可以说是一个bug),这个包的函数mycaleof与Guillaume Maze的PCAtools中的caleof函数共享。为每个EOF返回的方差分数(expv或expvar)是由所有计算的EOF解释的方差分数,而不是总方差分数。例如,我使用“TUTORIAL:From raw climate reanalysis data to ENSO,PDO,etc”中的代码,但调用eof函数时n(要计算的eof数)等于6。模式1和模式6占差异的57.3%和5.2%。然后我将n设为801,重新运行它。所有的EOF模式都是相同的,但是模式1和6现在只占36.5%和3.3%。如果我修改我的代码以便调用Guillaume Maze的caleof函数而不是mycaleof,然后,当使用方法2和方法4(分别调用eig和svd)而使用方法1和方法3(分别调用eig和svd)时,得到上述结果,解释方差的分数不依赖于参数n,对于模式1和6,等于36.5%和3.3%。我的结论是(我还没有详细研究过代码的这一部分):a)expvar中的分母是所有已计算eof的方差,而不是总方差;b)方法2和方法4的caleof,以及mycaleof,只计算它们返回的eof,但是caleof方法1和3计算了所有的eof,即使它们返回的次数更少。

可以ZU

嗨网速慢,
我也在学习代码.In我认为,“季节变化”是指不同季节(由12个月组成)的信号变化,在PC1中可以看到模式1的时间变化,是与太阳运动引起的海温变化相对应的半年变化。
干杯,

苏曼Maity

你好聊天
这是一个优秀的软件给我,因为我刚开始学习。有一点是我不明白这是提到如下:
在这个例子中,你已经表明,如果EOF应用于原始sst,那么第1个模式将显示具有高解释方差的季节变化。为什么叫“季节变化”?因为我看到一个周期需要一年才能完成。你想说一个季节等于一年吗?
为了摆脱变化基本上是“月度异常”被发现。我无法连接两个,即“季节性变化”和“月异常”。虽然这是一个惯例,但是你能不能把一些光上?
问候
苏曼

缩小

喂聊天,
很好的代码。我想建议,结果是标准化的,即时间特征向量为1,对应的特征值为方差之和,所以当我们乘以特征向量的振幅,特征值等于时间序列的实际振幅变化(即sst)。
问候
数据仓库

可以ZU

图10在德塞、克拉拉等(2009)可能不是EOF1,它没有标记。海温异常。

可以ZU

嗨乍得格林,

非常大的代码!我不知道该数据(在本例SST数据集)需要被去趋势,平均除去,季节性周期中删除,但在EOF子功能(mycaleof)被再次去趋势(F =消除趋势(M,“恒定”);)。

而另一篇论文DESER,克拉拉,等人(2009)http://www.cgd.ucar.edu/staff/cdeser/docs/deser.sstvariability.annrevmarsci10.pdf
图10,只需做海温异常,得到北太平洋作为PDO的EOF1,这与梅西和查韦斯(2011)的图5略有不同,后者是对应于PDO的EOF3。

查德·格林

你好,郝和乔,

事实上,下面的示例文件

[eof_maps,PC,expv] = EOF(SST);

并产生一个复杂的双重效果。但是,看看虚相对于总幅度分量的幅度。下面,我再乘以100绘制的虚部为总幅度的百分比:

于imagesc(ABS(IMAG(PC))。* 100./abs(pc))
彩条
CAXIS([0 100])

水平频带表示模式1到795的虚部恰好为零。它超越了795模式的想象,但在气候科学中,我们通常不使用超过前几个模式的任何模式。这是有原因的:如果你看看模式796解释了多少差异:

出口价(796)
ANS =
0

如果得到一个复杂的双重结果,请检查虚分量相对于信号其余部分的大小。看看能解释多少百分比的差异。如果虚部可以忽略不计,你可以通过

eof_映射=实(eof_映射);
PC =实际(PC);

希望这可以帮助,
乍得

郝过

这是很好的,值得注意的,但是,我也有同样的问题与乔孙,例子数据有一些问题与复二重的结果,eof庠地图和pc。

陶嘉

孙巧

这是很好的代码。我使用了示例数据太平洋.mat你提供了,但是在[eofôu-maps,pc,expv]=eof(sst)行中,eofôu-maps和pc的结果是复杂的两倍。

Ĵ

余隆

更新

1.2款

更新引用。

1.1款

修正了由于舍入解释的方差值而引起的问题,修正了大量模式下结果变得复杂的问题,更新并扩展了教程。

1.0.0.0版

文档中的排错修复。

1.0.0.0版

在教程中添加了一个简单的示例。

EOF

EOF