为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 经验正交函数分析法(EOF)在matlab上的实现

经验正交函数分析法(EOF)在matlab上的实现

2018.06.13 17:22 11260浏览

原理与计算步骤



数据准备

    数据集为福建省28个气象站1960-2013年的年际降水量数据,行为站点编号,列为年份时间。部分数据如下:


matlab代码

[plain] view plain copy print?

  1. clc;clear;  

  2. data=xlsread('C:\Users\Administrator\Desktop\福建降水量.xls');  

  3. [r1,c1]=size(data);  

  4. x=data(2:end,2:end);  

  5. [m,n]=size(x);  

  6. for i=1:m  

  7.     x(i,:)=x(i,:)-mean(x(i,:));  

  8. end  

  9. c=x*x'/n;  

  10. [EOF,E]=eig(c);  

  11. PC=EOF'*x;  

  12. E=fliplr(flipud(E));  

  13. lambda=diag(E); %特征值  

  14. EOF=fliplr(EOF);%每列代表特征向量(模态)  

  15. PC=flipud(PC);%每行时间系数  

  16. r=lambda/sum(lambda);%方差贡献率  

  17. e0=lambda*sqrt(2/m);  

  18. e(:,1)=lambda-e0;%特征根误差下限  

  19. e(:,2)=lambda+e0;%特征根误差上限  

clc;clear;
data=xlsread('C:\Users\Administrator\Desktop\福建降水量.xls');
[r1,c1]=size(data);
x=data(2:end,2:end);
[m,n]=size(x);
for i=1:m
    x(i,:)=x(i,:)-mean(x(i,:));
end
c=x*x'/n;
[EOF,E]=eig(c);
PC=EOF'*x;
E=fliplr(flipud(E));
lambda=diag(E); %特征值
EOF=fliplr(EOF);%每列代表特征向量(模态)
PC=flipud(PC);%每行时间系数
r=lambda/sum(lambda);%方差贡献率
e0=lambda*sqrt(2/m);
e(:,1)=lambda-e0;%特征根误差下限
e(:,2)=lambda+e0;%特征根误差上限

运行结果及分析

空间分布特征分析

      前5个特征向量特征值的累积贡献率达到85.4%,但只有前两个特征根的误差范围不重叠通过North显著性检验,累积贡献率接近75%,因此这两个特征根可以很好地解释福建省近1960-2013年降水的两种分布类型。

表1 福建省年降水量EOF分解的前5个特征向量贡献率


模态

特征值

方差贡献率%

累计方差贡献率%

特征根误差范围


下限

上限





1

1679316.03  

0.6232  

0.6232  

1230499.94  

2128132.12  

2

324813.75  

0.1205  

0.7437  

238003.62  

411623.87  

3

131434.39  

0.0488  

0.7925  

96307.07  

266561.71  

4

96314.33  

0.0357  

0.8282  

70573.24  

122055.42  

5

69212.62  

0.0257  

0.8539  

50714.77  

87710.47


      运用Arcgis作模态1和模态2空间分布图(图1、图2)。作图数据如下:

表2 模态1、模态2作图数据


站号站名纬度经度模态1模态2
58725邵武27.33117.470.230.27
58730武夷山27.72118.000.240.31
58731浦城27.92118.530.210.24
58734建阳27.33118.120.200.23
58737建瓯27.05118.320.210.18
58744寿宁27.53119.420.21-0.02
58754福鼎27.33120.200.17-0.15
58818宁化26.23116.630.240.10
58820泰宁26.88117.150.240.23
58834南平26.65118.170.220.19
58837尤溪26.17118.150.150.06
58843霞浦26.88120.000.18-0.11
58846宁德26.67119.520.20-0.16
58847福州26.08119.280.16-0.12
58911长汀25.85116.370.220.04
58918上杭25.05116.420.16-0.15
58921永安25.97117.350.180.03
58926漳平25.30117.400.17-0.10
58927龙岩25.10117.020.17-0.15
58931九仙山25.72118.100.15-0.15
58933屏南26.92118.980.230.10
58936仙游25.35118.680.17-0.22
58944平潭25.52119.780.12-0.08
59113永定24.85116.820.18-0.26
59126漳州24.50117.650.16-0.26
59133崇武24.90118.920.10-0.24
59134厦门24.52118.150.15-0.29
59321东山23.78117.500.17-0.29

      模态1特征向量的方差贡献率为62.32%,远高于其他模态的贡献率,是福建省降水场的主要空间分布形式。图1显示,模态1站点的特征值均为正值,表明1960~2013年间福建省的降水变化趋势具有高度的一致性,即呈现全省全年要么都多雨,要么都少雨的降水分布特征。高值中心位于闽西北地区,反映该区域降水变化量大,低值中心位于东南地区。整个闽西北地区的降水变化程度远高于闽东南地区,闽中则为过度区。

      模态2特征向量的方差贡献率为12.05%,也是典型的降水主要空间分布形式。图2显示,这种分布格局以鹫峰山-戴云山-玳瑁山为界,向北为正值区,向南为负值区,正值中心出现在西北武夷山地区,负值中心出现在东南厦漳泉地区,呈现西北-东南反向分布模式,即要么闽西北地区降水量增多,闽东南地区降水量减少,要么闽西北地区降水量减少,闽东南地区降水量增多。特征向量值从西北向东南依次减小,反映福建省降水量变化也是由西北向东南递减。




时间分布特征分析

      根据空间分布特征分析,福建省降水场主要有4种表现类型:模态1决定全年全省多雨或者全省少雨2种类型;模态2决定全年闽西北地区降水偏多东南地区降水偏少,或者闽西北地区降水偏少东南地区降水偏多2种类型。时间系数代表了所对应特征向量空间分布模态的时间变化特征,系数符号决定模态的方向,正号表示与模态同方向,负号则相反,且系数绝对值越大,表明这一时刻这一类模态越典型。对54a来的4种降水空间模态分布类型做统计分析,取每年时间系数绝对最大所对应的特征向量作为当年降水空间分布模态,得出有14a全年全省多雨,19a全年全省少雨;闽西北地区多雨东南地区少雨的为7a,闽西北地区少雨东南地区多雨的为4a,具体年份见表3。可以看出54a来降水场的分布模式以模态1为主,有33a,占总年数61.11%,且模态1的时间系数趋势斜率大于零,在一定程度上说明福建省54a来年降水量有增多的趋势;模态2出现11a,占总年数20.37%,模态2时间系数趋势斜率小于零,说明54a来闽西北地区降水量有增加的趋势,东南地区有减少的趋势。其余零散不典型模态类型出现10年,占总年数18.52%。时间系数所反映的与特征向量反映的典型降水场程度基本一致。

表4 四种降水场表现类型年份分布


模态1

全省多雨

1961

1973

1975

1983

1992

1994

1997

1998

1999

2000

2005

2006

2010

2012

全省少雨

1963

1965

1966

1967

1971

1974

1977

1979

1984

1986

1991

1993

1996

2003



2004

2007

2008

2009

2011











模态2

西北多东南少

1962

1970

1976

1980

1982

1995

2002








西北少东南多

1972

1985

1990

2013













表3 模态1、模态2时间系数


时间模态1时间系数模态2时间系数
1960-158.14-650.41
19611652.81-541.87
1962788.881110.46
1963-1830.29-112.63
1964223.57-321.01
1965-215.72-0.34
1966-735.88293.32
1967-2354.93601.72
1968-28.73653.56
19692.94293.82
1970624.00946.78
1971-2599.28-440.43
1972-90.89-561.47
19731839.88-456.35
1974-739.77-10.85
19752274.88277.39
1976-363.66639.93
1977-816.71628.96
1978-437.53-223.47
1979-837.96169.88
1980-73.27453.39
1981-140.65114.34
1982-99.95570.71
19831297.81-911.78
1984-1218.47161.46
1985-1.66-499.80
1986-1039.5334.22
198713.19295.07
1988292.29138.44
1989-453.9837.69
1990905.54-1865.65
1991-2041.42-43.99
19921846.41-274.80
1993-631.25100.03
1994556.50123.75
1995-274.32737.85
1996-853.52-604.67
19972240.64-201.37
19982819.40723.27
1999544.71347.52
20001016.44-489.25
2001418.54201.46
2002638.70693.94
2003-2812.4516.29
2004-1519.38-86.82
20051269.29-361.10
20062245.40-1006.72
2007-789.83-724.74
2008-634.49-346.52
2009-1206.84232.69
20102009.48768.07
2011-1882.11-424.01
20121817.91790.38
2013-456.57-996.32

原文出处


点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
90
获赞与收藏
440

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

142篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消