IDL 实现 EOF(经验正交函数分析)

关于EOF详细介绍请wiki http://en.wikipedia.org/wiki/Empirical_orthogonal_functions或者Google之。

与PCA一样,EOF也是遥感多维变量的一种线性变换,同样可以达到降维的目的。EOF多用于气象要素场等包含了时间、空间信息的数据,例如可以根据多年气象站的降雨监测资料,提取出空间“主成分”,即若干个主要的大面积降雨或者干旱的地区;时间“主成分”,即降雨年际周期或者年内周期。

EOF是一种极有效的数据处理手段,可以直接得到有物理意义的结果。

源码

IDL 源码pro GET_SZ,data,ns=ns,nl=nl,nb=nb,type = type

  sz = size(data)

  type = sz[0] ge 1 ? sz[-2] : 0
ns = sz[0] ge 1 ? sz[1] : 1
nl = sz[0] ge 2 ? sz[2] : 1
nb = sz[0] ge 3 ? sz[3] : 1 end PRO EOFS,DATA,EOF,PCS
;svdc,data(*,*),w,u,v,/column
;eofs=reform(u(*,*),nlons,nlats,cutoff)
;pcs=v
;svls=w
EOF = -1
PCS = -1
GET_SZ,data,ns=ns,nl=nl,nb=nb,type = type IF ISA(DATA,/NUMBER) AND NB GT 1 AND SIZE(DATA,/N_DIMENSIONS) EQ 3 THEN BEGIN
SVDC,data,w,u,v,/column
DATA = TRANSPOSE(REFORM(DATA,NS*NL,NB))
eof=REFORM(U,NS,NL,NB)
PCS = V
ENDIF
END

说明:

  1. 获得输入数据的ns,nl,nb,便于矩阵变形及恢复。

  2. svdc,IDL奇异值分解函数,函数用法请查看帮助。

  3. 所谓的EOF处理,IDL实质上只需要一行代码即可。我一般会根据这一核心操作组织矩阵变形代码,输入、输出代码成为一个pro。

上一篇:【gcd+数学证明】【HDU1722】 CAKE


下一篇:深入理解MVC模式