EOF的源程序 MATLAB

  • 格式:doc
  • 大小:44.00 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

> mssa.rar > EEOF.M

function [E,V,A,C]=eeof(X, M, convert)

% Syntax: [E,V,A,C]=eeof(X, M); [E,V,A,C]=eeof(X, M, 1);

% This function performs an extended empirical orthogonal

% function (EEOF) analysis of matrix 'X', for embedding dimension 'M'. % Each of the L columns of X is a time series of length N.

%

% Returns: E - eigenfunction matrix. (LM by LM)

% V - vector containing variances (unnormalized eigenvalues). % A - matrix of principal components.

% C - lag-covariance matrix.

%

% V is ordered from large to small: E and A are sorted accordingly. %

% Note that X is assumed to be centered. To center the data, use

% the commands:

% [r,c]=size(X); X=X-ones(r,1)*mean(X); before running EEOF. % If you also want to standardize the data, use:

% X=X./(ones(r,1)*std(X));.

%

% If a third argument is supplied, the eigenfunctions/values will

% be reordered into the same format as MSSA output - i. e. L blocks % of size M rather than M blocks of size L.

%

% This function provides the same output, within numerically determined % limits, as MSSA methods using Broomhead-King type covariance estimation:

% it is intended as a check on those functions.

%

% Note that this function is *extremely* computationally intensive

% for large matrices and lags. For example, if X is 1000 by 1000,

% and M = 5, EEOF will take about 10 hours on a Cray YMP! Inputting % a subset of the PCs of X rather than the full data matrix can

% substantially reduce the computational load.

%

% Written by Eric Breitenberger. Version date 1/11/96

%************************************************.edu

%

[N,L]=size(X);

if M*L>=N-M+1, disp('Warning: Covariance matrix may be

ill-conditioned.'), end

% Create the extended matrix:

T=zeros(N-M+1,M*L);

for i=1:M

T(:,L*(i-1)+1:L*i)=X(i:N-M+i,:);

end

% Compute the eigenvectors/values of the covariance matrix:

C=(T'*T)/(N-M+1);

clear X

[E,V]=eig(C);

V=diag(V);

A=T*E; % compute principal components

if nargin==3 % Prepare MSSA-style output:

% sort E,V,C, and A from M blocks of L to L blocks of M.

ind=1:L:(M-1)*L+1;

for i=1:L, index=[index ind+i-1]; end

E=E(index,index);

V=V(index);

% sort the covariance matrix and PCs:

C=C(index,index);

A=A(:,index);

end

% Sort eigenvalues/vectors/PCs in descending order:

[V,ind]=sort(-V);

V=-V';

E=E(:,ind);

A=A(:,ind);

> mssa.rar > EOF.M

function [F,L,B]=eof(X,n,s);

% EOF calculates the empirical orthogonal functions

% and amplitudes (principal components) of the data matrix 'X'. % Syntax: [F,L,B]=eof(X); [F,L,B]=eof(X,.9,'norm');