Skip to main content
  • Home
  • Documentation
  • FAQ
  • Downloads
  • Support
  • Current Release Notes
  • Ferret Users Guide
    • Users Guide Index
    • Commands Reference
    • 1. Introduction
    • 2. Data Set Basics
    • 3. Variables & Expressions
    • 4. Grids & Regions
    • 5. Animations & Gif Images
    • 6. Customizing Plots
    • 7. Handling String Data Symbols
    • 8. Working with Special Data Sets
    • 9. Computing Environment
    • 10. Converting to NetCDF
    • 11. Writing External Functions
    • Glossary
    • Appendix A: Functions
    • Appendix B: PPLUS Guide
    • Appendix C: Ferret-Specific PPLUS Enhancements
  • Previous Release Notes
  • Tutorials and Demos
    • Ferret Tour
    • DSG files: Discrete Sampling Geometries Demo
    • Ferret sorting demo
    • Fast Fourier Transforms demo
    • Empirical Orthogonal Functions demo
    • Ferret objective analysis demo
    • Ferret Palette Demo
    • Map projections
    • Ferret polygon vector demo
    • Ferret Graticules demo
    • Ferret Polytube Demo
    • Ferret Polymark Demo
    • Ferret Constant-Array demo
    • Ferret land_detail demo
    • COADS Tour
    • Levitus Tour
    • Use OPeNDAP
    • Ferret binary read demo
  • PyFerret
    • PyFerret Downloads and Install ../../faq/ferret-faqs.html
    • What is PyFerret?
    • Why use PyFerret?
    • PyFerret for the Ferret user
    • PyFerret command syntax: quick-start notes
    • PyFerret for the Python user
    • Graphics in PyFerret ?
    • New Ferret functionality
    • PyFerret Python functions and constants
    • PyFerret Python objects and methods
    • Ferret external functions in Python
    • Ferret Fortran external functions
    • PyFerret metadata-and-data dictionaries
  • OPeNDAP
    • OPeNDAP usage in Ferret
    • Use OPeNDAP Demo
    • Test OPeNDAP

EOF_SPACE and EOFSVD_SPACE

EOF_SPACE

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 run the demonstration script ef_eofsvd_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 run the demonstration script ef_eofsvd_demo.jnl for examples of this function.