经验正交分解的原理

简介

经验正交函数分析方法(empirical orthogonal function,缩写为EOF),也称特征向量分析(eigen vector analysis),或者主成分分析(principal component analysis,缩写PCA),是一种分析矩阵数据中的结构特征,提取主要数据特征量的一种方法。Lorenz在1950年代首次将其引入气象和气候研究,现在在地学及其他学科中得到了非常广泛的应用。

分析中通常特征向量对应的是空间样本,称空间特征向量或者空间模态;对应的是时间变化称为时间系数。

特点

(1)主要特色:能够有效地体现物理场的主要信息,保留次要信息并排除外来的随机干扰。

(2)无固定的函数形式:这种正交函数展开不像三角函数展开、球函数展开那样有固定的展开形式。

(3)图形是由场本身决定的,不是事先人为地给定典型场函数的。

(4)具有收敛快、能更好地反应出场的基本结构的特征。

主要应用

(1)可在有限的区域中不规则分布的站点进行:空间不同站点/同一点的不同时间、不同高度的多种要素进行综合分析。

(2)可用于要素场分析、垂直结构分析、动力模型垂直分层等。

基本思想

经验正交函数分解的基本思想是把包含m个空间点(或p个变量)的n个时次的观测场的序列(i = 1,2,…,m; j = 1,2,…,n)分解成相互正交的时间函数与相互正交的空间函数的乘积之和,常把空间函数看做典型场,时间函数看做典型场的权重系数,则不同时间的要素场是若干个典型场按不同的权重线性叠加的结果,各个场之间的差别就在于各典型场的系数不同。

$$ nXm = nEm \times m\Phi_{m}^{T} $$

EOF函数简介

EOF函数的原型为:

$$ [V,EOFs,EC,error]=EOF(D,p) $$

本站提供的下载:EOF.m

输入参数

D:输入的物理场数据,为一个二维矩阵,每一行假定为一个样本,每一列为一个变量。因此D的一列表示一个时间序列的变量。

P:可选项,指EOF分析结果的模态数,其取值应小于时间间隔和样本数

输出参数

V:与EOFs有关的特征向量;

EOFs:时间系数;

EC:空间模态,由p个模态的列向量组成的矩阵;

error:重建误差;

经验正交分解实例

数据下载

前往SODA: Simple Ocean Data Assimilation下载数据

选择相关变量,以“TAUY”为例。

合理选择研究区域,时间范围等

选择合适数据下载后,认真核对数据基本信息

在数据下载页选择合适的数据格式,我们选择NetCDF

现在开始提取数据,提取的数据名为data.cdf

建议根据下载的数据变量名、范围、时间等命名,便于查找。如tauy_1958_2008_NWPacific.cdf

数据读取1

2

3

4

5

6

7

8%% read data

file = 'tauy_1958_2008_NWPacific.cdf';

% ncdisp(file);

time = ncread(file,'time');

lon = ncread(file,'lon');

lat = ncread(file,'lat');

tauy = ncread(file,'tauy');

missing_value = ncreadatt(file,'tauy','missing_value');

数据预处理

(1)显示数据的范围

使用m_map工具箱进行地图的显示:

1>> figure;m_proj('mercator','lat',[20 60],'lon',[100 160]);m_coast('patch',[0.7 0.7 0.7]);m_grid;

(2)选择海区

1

2

3% set range

la = 46:59;

lo = 145:155;

(3)去趋势处理

1

2

3

4

5

6

7

8

9

10

11xx = find(lon>=min(lo) & lon<=max(lo) );

yy = find(lat>=min(la) & lat<=max(la));

tauy_sub = zeros(length(xx),length(yy),612);

tauy_sub = tauy(xx,yy,:)

%% detrend

tauy_de = zeros(size(tauy_sub));

for ii = 1:length(xx)

for jj = 1:length(yy)

tauy_de(ii,jj,:) = detrend(squeeze(tauy_sub(ii,jj,:)));

end

end

EOF计算1

2

3

4%% EOF

tauy_de = reshape(tauy_de,length(xx)*length(yy),612);

[V,EOFs,EC,error] = EOF(tauy_de,10);

EC = reshape(EC,length(xx),length(yy),10);

计算方差贡献率1V = [2.3544 0.1429 0.0625 0.0410 0.0305 0.0085 0.0077 0.0073 0.0024 0.0021]

计算各模态的方差贡献率:

1

2>> V/sum(V)

ans =[0.8853 0.0537 0.0235 0.0154 0.0115 0.0032 0.0029 0.0028 0.0009 0.0008]

绘图

根据方差贡献率,画出方差贡献率大于90%的前若干个模态的空间模态和时间系数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49%% figure

figure;

% EOF2

plot(EOFs(:,2));

ylabel('PC2','FontSize',18);

xlabel('Year','FontSize',18)

axis([1 612 -0.2 0.2]);

set(gca,'xtick',25:12*5:576,'xticklabel',{1960:5:2005},'FontSize',14);

set(gca,'tickdir','out' ,'LineWidth',1.5);

set(gca,'Position',[0.075 0.125 0.875 0.15]);

box off

% EOF1

subplot(323)

plot(EOFs(:,1));

ylabel('PC1','FontSize',18);

axis([1 612 -0.2 0.2]);

set(gca,'xtick',25:12*5:576,'xticklabel',{},'FontSize',14);

set(gca,'tickdir','out' ,'LineWidth',1.5);

set(gca,'Position',[0.075 0.3 0.875 0.15]);

box off

% EC2

subplot(322)

m_proj('Mercator','lat',[45 60],'lon',[130 160]);

m_pcolor(lon(xx),lat(yy),EC(:,:,2)');

caxis([-1.0 2.5]) %设置颜色映射范围

shading interp;

m_coast('patch',[0.7 0.7 0.7]);

m_grid('linestyle','none','box','fancy','tickdir','out');

set(gca,'Position',[0.5 0.5 0.45 0.4]);

title('EOF2','FontSize',18);

% EC1

subplot(321)

m_proj('Mercator','lat',[45 60],'lon',[130 160]);

m_pcolor(lon(xx),lat(yy),EC(:,:,1)');

caxis([-1.0 2.5])

shading interp;

m_coast('patch',[0.7 0.7 0.7]);

m_grid('linestyle','none','box','fancy','tickdir','out');

set(gca,'Position',[0.05 0.5 0.45 0.4]);

title('EOF1','FontSize',18);

% colorbar

h = colorbar;

caxis([-1.0 2.5])

set(h,'position',[0.9,0.5,0.02,0.4])

set(h,'ytick',-1.0:0.7:2.5,'yticklabel',{-1.0:0.7:2.5})

结果图

经验正交函数分解matlab,matlab物理场的正交分解相关推荐

  1. CEEMDAN:完全噪声辅助聚合经验模态分解(matlab)——学习笔记3

    CEEMDAN:完全噪声辅助聚合经验模态分解--学习笔记3 从EMD到CEEMDAN 1.EMD EMD算法将基于原始信号的局部特征时间尺度,将原始信号分解为特征模态函数,即将其分解为从高频到低频的一 ...

  2. 数据变换分解 | Python实现EOF经验正交函数分解时间序列模态分析

    时间序列分析 | Python实现EOF时间序列模态分析 目录 时间序列分析 | Python实现EOF时间序列模态分析 基本介绍 程序设计 学习小结 基本介绍 EOF分析只是以方差对应的基对数据进行 ...

  3. 经验模式分解(EMD)——简介及Matlab工具箱安装

    最近在做脑电信号分析,在导师的建议下学习了一点经验模式分解(下面简称EMD)的皮毛,期间也是遇到了很多问题,在这里整理出来,一是为了自己备忘,二是为了能尽量帮到有需要的朋友. 一.EMD简介 经验模态 ...

  4. 克劳特法matlab,经验模式分解matlab

    EMD分解的matlab程序 %此版本为 ALAN 版本的整合注释版 function imf = emd(x...(x1) %当标准偏差系数 sd 大于 0.1 或 x1 不是固有模态函数时,分量终 ...

  5. lmd matlab 信号处理程序,LMD经验模态分解matlab程序.doc

    LMD经验模态分解matlab程序 LMD经验模态分解matlab程序--原味的 曾经也用滑动平均写过LMD,其实滑动平均的EMD才是原汁原味的居于均值分解. 分享给有需要的人,程序写的不好,只是希望 ...

  6. 经验模式分解(EMD)的MATLAB工具箱安装详解

    经验模式分解(EMD)的MATLAB工具箱安装详解 MATLAB工具箱安装 时频分析工具箱 安装EMD工具箱 代码检验是否安装成功 MATLAB工具箱安装 首先,本文参考CSDN这篇文章https:/ ...

  7. 经验模式分解(EMD)及希尔伯特-黄变换(HHT)简介及matlab实现

    本文介绍过程涉及到两个链接工具包,可以自己网上搜索下载,以下提供了网盘下载的地址,因为作者主要做语音方面工作,所以后面的说明主要以说话人识别为例.(链接:https://pan.baidu.com/s ...

  8. matlab求矩阵距平矩阵,matlab经验正交函数EOF(转载)

    A.7EOF分析 经验正交函数分析方法(empiricalorthogonalfunction,缩写为EOF),也称特征向量分析(eigenvectoranalysis),或者主成分分析(princi ...

  9. 线谱法 时钟分量的提取 matlab,LMD局域均值分解的matlab程序及示例

    说明:研究LMD局域均值分解有3个月左右,能找到的相关文章也基本上看了一遍,觉得是个很好的方法,号称是EMD经验模态分解的改进版.但是网络上一直没有找到该算法的matlab程序,只见文章说的天花乱坠. ...

最新文章

  1. 几种常见的模式识别算法
  2. Linux拷贝排除一个或多个目录的实现方法
  3. 电子称重管理计算机,称重管理系统
  4. 一个与神经网络分类特征旋转不变性有关的实验
  5. android 分组柱状图_整理了一个 android 上的波形图及柱状图绘制控件
  6. vue 固定div 滚动_vue移动端 导航吸顶(固定定位)页面滚动出现抖动
  7. 《大数据分析原理与实践》一一第3章 关联分析模型
  8. 巧用 Nginx 快速实现 HTTPS 双向认证
  9. 内部曝料——博文年会之《武林外传》
  10. 递归+分治+贪心+动态规划
  11. html中单双引号镶嵌
  12. 阿里云短信通道被人恶意刷了几万条短信,怎么办?(短信接口被盗刷系列3)
  13. 【day13】【洛谷算法题】-P5713洛谷团队系统-刷题反思集[入门2分支结构]
  14. win8运行matlab7.0,Win8.1系统中matlab7.0不兼容的解决方法
  15. 高盐废水如何处理,离子交换树脂在高盐废水中的应用
  16. oracle 每3位加逗号,[DB][Oracle]Oracle格式化数字的方法(指定小数点位数,每3位加逗号)...
  17. 世界女性科技群落(四):技术与流行文化顶格发展,日韩女性的科技暗面
  18. AndroidStudio gradle 7.0+配置说明
  19. 隔磁片在无线充线圈中的作用
  20. 解决无效驱动器的问题

热门文章

  1. shiro学习笔记(三)知识整合
  2. 45个网页中充满创意的字体排版
  3. 归一化函数normalize详解
  4. 已解决yolov5报错RuntimeError: CUDA out of memory. Tried to allocate 14.00 MiB
  5. Addressing Function Approximation Error in Actor-Critic Methods
  6. MATLAB中的prod函数
  7. 【调剂】西安工业大学-陕西科技大学 课题组招收考研调剂生,欢迎报考光学工程、电子信息,光学等方向通信调剂...
  8. matlab ar谱分析,用MATLAB进行AR模型功率谱分析
  9. C++ 数字三角形(动态规划)
  10. FTP服务器可以存储网络文件吗,nas存储怎么做ftp服务器