爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
123
返回列表 发新帖
楼主: 泰达巴神

做eof时碰到了一个很让我困惑的问题!求解答!

[复制链接]

新浪微博达人勋

 楼主| 发表于 2014-11-24 21:10:59 | 显示全部楼层
言深深 发表于 2014-11-24 20:28
可以帮你看!但是我能说我不懂matlab嚒

!!!怎么会这样...
那我想问下,我有一个fortran的eof程序,算出来的结果时间序列的趋势是正确的,但数值不对,太大了。时间序列和特征向量要分别除以和乘以对应的特征值,将其标准化。我感觉我程序算出来的特征值太大了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-11-25 08:40:51 | 显示全部楼层
泰达巴神 发表于 2014-11-24 21:10
!!!怎么会这样...
那我想问下,我有一个fortran的eof程序,算出来的结果时间序列的趋势是正确的,但 ...

特征值大是可能的啊,特征值归一化之后才是解释方差。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-25 11:52:22 | 显示全部楼层
泰达巴神 发表于 2014-11-24 15:47
X = dlmread('D:\finalcca\sa\ea\easa.txt');
[m,n]=size(X); %求空间点数和时间
[VR,DR] = eigs(X' ...

能否说明下你的X是否已经中心化,是m-by-n还是n-by-m,说详细点嘛,不然其他人想看都看不懂呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-25 12:08:26 | 显示全部楼层
泰达巴神 发表于 2014-11-24 15:47
X = dlmread('D:\finalcca\sa\ea\easa.txt');
[m,n]=size(X); %求空间点数和时间
[VR,DR] = eigs(X' ...

我先假设你的 [m,n]=size(X); %求空间点数和时间   跟读取是X是匹配的,则错误的有 第3行 改为  [VR,DR] = eigs(X'*X/m);  第5行改为:DR = DR(:).*m./n;    第8,9行的  DN  是啥??? 不对。向量归一化,应该是对每个k的向量逐个除以他的内积,时间系数的求法应该在特征向量归一化之后,T = V_normalized'*X   
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-25 15:50:59 | 显示全部楼层
liu_senfeng 发表于 2014-11-25 12:08
我先假设你的 [m,n]=size(X); %求空间点数和时间   跟读取是X是匹配的,则错误的有 第3行 改为  [VR,DR]  ...

第三行和第五行改过以后,就相当于在第三行直接除以n,我本来是[VR,DR] = eigs(X'*X/n);这么写的,但是感觉数值有问题,在网上看了一些教程有的不用除n,就去掉了。按你的修改过后,就和我之前的结果一样了。第8.9行打错了,应该是DR.
我的资料是(61*29,53),若可能的话我把资料传给你,也想跟你交流一下,谢谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-25 15:55:03 | 显示全部楼层
泰达巴神 发表于 2014-11-25 15:50
第三行和第五行改过以后,就相当于在第三行直接除以n,我本来是[VR,DR] = eigs(X'*X/n);这么写的,但是感 ...

X = dlmread('D:\finalcca\sa\ea\easa.txt');
[m,n]=size(X); %求空间点数和时间
[VR,DR] = eigs(X'*X/m);  %计算特征值和特征向量
   DR = diag(DR); %特征值
   DR = DR(:).*m./n; %特征值
   VN = X*VR; %时空转换
   s  = repmat(sqrt(DR'),m,1);
   VN = VN./repmat(sqrt(DR'),m,1); %特征向量标准化
   T  = VN'*X; %时间序列
   D100  = DR*100./trace(X*X'/n); %方差贡献率
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-25 15:55:31 | 显示全部楼层
泰达巴神 发表于 2014-11-25 15:55
X = dlmread('D:\finalcca\sa\ea\easa.txt');
[m,n]=size(X); %求空间点数和时间
[VR,DR] = eigs(X'*X ...

这是我改过的程序,时间系数画出来还是不对...
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-25 16:03:59 | 显示全部楼层
言深深 发表于 2014-11-25 08:40
特征值大是可能的啊,特征值归一化之后才是解释方差。

是呢,我fortran程序里有相应的步骤,但还是不对,呜呜
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-30 12:02:47 | 显示全部楼层
一直想做EOF,到现在还没开始动手,,赶紧整明白了和我们分享下。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-1-13 20:50:27 | 显示全部楼层
谢谢分享~~~~~~~~~~~~~~~
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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