matlab做EOF分解时候如何获得特征向量对应的时间系数???

matlab做EOF分解时候如何获得特征向量对应的时间系数???,第1张

方法一;

运用svd函数进行分解

[u,s,v]=svd(x)

其中 u为x的空间函数

pc=s*v'为x的时间函数

s为x分解的对角阵

在计算主分量方差奉献时需要X*X'的对角阵。

因此还需要再运行一次svd函数

[u1,ss,v1]=svd(x*x')

则ss为x*x'的对角阵,可用来计算方差奉献。

方法二;

运用eig函数进行分解

[eof,e]=eig(x*x')

其中eof为x的空间函数

eof'*x为x的时间函数

pc=eof'*x

e为x的特征值组成的对角阵

这里需要注意的是e的对角阵不是按大到小排列的。因此若要使对角阵e的对角元素从大到小排列的话。时间场和空间场都应该有相应的变化。具体变化如下

eof=fliplr(eof) 最后的空间场 掉换矩阵左右两侧的数据

pc=flipud(pc)掉换矩阵上下两端的数据

e=fliplr(flipud(e)) 最后按对角元素大到小排列的对角阵与eof分解的完全一致

pc=flipud(pc) 最后的时间场

其中e为*x*x'的对角阵,eof为x的空间分量,pc为时间分量。

Matlab中fscanf的用法:

1、用fscanf是可以一个一个读入数据,也可以一下读入一个二维数组。

非常方便。我找了个中文的帮助资料,但是是繁体的,不过大家凑活看吧。如果遇到注释行,用下面的语句fscanf(fid,’%6s’,1),其中的6代表读入的字码长度。本来想多写点,但是好累,休息会,编程不是人干的活。

正式之读取资料函数如下之格式: A=fscanf(fid,format)

[A, count]=fscanf(fid,format,size) [A, count]=fscanf(fid,format,size)

2、这个指令可以自fid所标示的档案中将其资料依format的格式取出,并置於矩阵A中。这个指令可以自fid所标示的档案中将其资料依format的格式取出,并置于矩阵A中。 fid的定义与前述之fprintf指令相同。 fid的定义与前述之fprintf指令相同。 另一种型式则增加count与size两参数。另一种型式则增加count与size两参数。 count表示已完成的资料笔数。

3、 count表示已完成的资料笔数。 而size则是决定读入之资料量,可用[m,n]表示,表示读入之资料可填满mxn的矩阵。而size则是决定读入之资料量,可用[m,n]表示,表示读入之资料可填满mxn的矩阵。 其中n 可用inf取代,代表EOF(End of File)。其中n可用inf取代,代表EOF(End of File)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8048371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存