EOF_TFUNC
EOF_TFUNC(A, FRAC_TIMESER) Compute EOF time amplitude functions from x-y-z-time field w/gaps.
If running Ferret v6.8 and higher, also see EOFSVD_TFUNC, below. If there are gaps in your data, you may choose to use one of Ferret's filling transformations to fill the gaps and then compute the EOF results using EOFSVD functions. Or, see the instructions in the the Version 6.93 Release Notes to install the non-SVD functions. They run much slower, and return a result when there are gaps in the time series.
The computation is made in the X-Y and T directions. If the grid of the argument has further dimensions such as Z, then the XYT computation is made independently at each Z level.
Please see the discussion under EOF_SPACE, and see the demonstration ef_eof_demo.jnl for examples of this function.
The time amplitude functions (TAF's) are dimension less; and the mean of a given TAF = 1. They are returned as follows: For x=1, time amplitude function corresponding to the first eigenfunction is the time series with t=1:NT.
EOFSVD_TFUNC(A) Returns EOF (Empirical Orthogonal Function) time amplitude functions from x-y-z-time field computed by Singular Value Decompositiom
Arguments: |
A |
Variable in Variable in any X,Y, and time (see note above). |
Result Axes: |
X |
ABSTRACT 1 to NEOF |
Y |
ABSTRACT |
|
Z |
Inherited from A |
|
T |
Inherited from A |
The code runs a program contributed by Billy Kessler. It finds "traditionally-scaled" EOFs using a Singular Value Decomposition routine. "Traditionally-scaled" means that the units of the EOFs are the units of the variable, while the TAFs are dimensionless. The routine is based on Numerical Recipes routine svdcmp.f. The result of EOF decomposition is that a function f(x,t) of space and time is decomposed into a sum of products: f(x,t) = SUM[v(x)*a(t)]. The v(x) are referred to as the EOFs, or eigenvectors, while the a(t) are the "Time Amplitude Functions" (TAFs) (Also called "Principal Components") The number of terms in the sum (number of non-zero EOFs)
is the minimum of (# of locations,# of times). Based on Numerical Recipes subroutine svdcmp.
The EOFSVD functions all make the same computations, returning different portions of the results. EOFSVD_SPACE returns the eigenfunctions, normalized so that they have the units of data, while time amplitude functions (TAF's) are dimensionless. Thus the sum of the values of a given EOF = sqrt(eigenvalue), and the mean of a given TAF = 1. EOFSVD_STAT returns some useful statistics: the number of EOF's which were computed and normalized for the parameters given; the %variation explained for each eigenfunction, and the eigenvalues.
Specifying the context of the input variable explicitly e.g.
EOFSVD_SPACE(A[x=20:40,y=2s:40n,l=1:58])
will prevent any confusion about the region. See the note in chapter 3 on the context of variables passed to functions.
The EOFSVD analysis solves a matrix problem where the matrix is dimensioned (NX*NY*NZ) by NT, which can quickly become quite large. The EOFSVD functions use other workspace as well which demands even more memory, and often memory must be increased with the SET MEMORY command. Regridding to a coarser grid or restricting the region may be necessary.
See the example under EOF_STAT for more information on calling these functions, and see the demonstration ef_eof_demo.jnl for examples of this function.