EOF_SPACE(A, FRAC_TIMESER) Returns EOF (Empirical Orthogonal Function) spacial fields(eigenfunctions) from x-y-z-time field.
If running Ferret V6.8 and higher, see EOFSVD_SPACE, 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.
Arguments: |
A |
Variable in X,Y, and Time (see note above). |
FRAC_TIMESER |
Use only those time series with this fraction valid data, e.g. 0.8 to require that 80% of the data be present to use the data at a location. |
|
Result Axes: |
X |
Inherited from A |
Y |
Inherited from A |
|
Z |
Inherited from A |
|
T |
ABSTRACT 1 to NEOF |
The EOF functions all make the same computations, returning different portions of the results. EOF_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. EOF_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.
EOF_SPACE(A[x=20:40,y=2s:40n,l=1:58],FRAC_TIMESER)
will prevent any confusion about the region. See the note in chapter 3 on the context of variables passed to functions.
The method is an implementation of Chelton's '82 method for finding EOFs of gappy time series. If there are no gaps, it reduces to ordinary EOFs.
The EOF analysis solves a matrix problem where the matrix is dimensioned (NX*NY*NZ) by NT, which can quickly become quite large. The EOF 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 on the input parameters, and see the demonstration ef_eof_demo.jnl for examples of this function.
Note: Earlier versions of the EOF functions had one more parameter. Check the version you have by saying
yes? SHOW FUNCTION eof*
EOFSVD_SPACE(A) Returns EOF (Empirical Orthogonal Function) spacial fields(eigenfunctions) from x-y-z-time field computed by Singular Value Decompositiom
Arguments: |
A |
Variable in any spatial dimensions, and time |
Result Axes: |
X |
Inherited from A |
Y |
Inherited from A |
|
Z |
Inherited from A |
|
T |
ABSTRACT 1 to NEOF |
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.