[Thread Prev][Thread Next][Index]

Re: [ferret_users] Vector EOF



Ryo's suggestion will work. but consider what result you want.

Remember that scalar EOFs are an entirely 2-d calculation: the input matrix is (typically) a function of (space, time). The space and time locations are just lists with arbitrary order: as long as you keep track of the order, all the values can be scrambled and the eigenvalues/vectors will be identical.

Therefore, a typical way to do EOFs of two quantities together (temperature and salinity, for example) is to simply double the list of locations, do the EOF decomposition, and reassemble. This is what Ryo's suggestion would do.

Techniques like this can also be used for time-lagged EOFs, where the same data is repeated in the list with successive lags.

There are also vector EOFs, which finds eigenvalues of the complex quantity (u,v). These results might be different than the above if the vectors vary in some systematic way (for example if they rotate without changing magnitude or change magnitude without changing direction).

And most important when doing EOFs: there is no expectation that the eigenvectors are physical! They might be physically meaningful or might not be. Thoughtful contemplation of the results is always required.

An excellent discussion of these topics is in Bretherton, Smith and Wallace (1992, J.Clim., 5(6) 541-560).

Billy

On Tue, Apr 13, 2010 at 8:03 AM, Ansley Manke <ansley.b.manke@xxxxxxxx> wrote:
Thanks for the info Ryo.  The way the EOF's are set up in Ferret is really as a 2D calculation
yes? show func eof_space
EOF_SPACE(A,frac_timeser)
    Compute EOF spacial fields from XYT field
    A: Variable in x,y,t; may be fcn of z
    frac_timeser: Use only those time series with this fraction valid data
if you send in a function with a Z variation, the calculation will be made separately at each depth.  So your last suggestion sounds like the correct thing to do.


Ryo Furue wrote:
Hi Tony,

| I have been enjoyed using the EOF function of ferret recently. But now I
| need to do EOF for velocity vectors. Does anyone know how to achieve it?

As I understand (which may well be wrong), a vector EOF is to treat
each component of a vector just as an additional dimension.  Suppose
you have a 2D vector field (u(x,y,t), v(x,y,t)), you basically look
for 3D EOFs for a variable a(x,y,k,t), where a(x,y,1,t) = u(x,y,t)
and a(x,y,2,t) = v(x,y,t).

I'm not sure, but the following method may work.

If Ferret has only 2D EOF, then you can (I think) achieve the same
effect by 1) squashing the x-axis (by regridding) and remapping
the u field on to the western hemisphere, say, and v on to the eastern
hemisphere, 2) finding EOFs, and 3) "re-assembleing" the EOFs
to a vector, taking their x-components from the western hemisphere
and y-components from the eastern hemisphere.

Regards,
Ryo
  



--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
William S. Kessler
NOAA / Pacific Marine Environmental Laboratory
7600 Sand Point Way NE
Seattle WA 98115 USA

william.s.kessler@xxxxxxxx
Tel: 1-206-526-6221
Fax: 1-206-526-6744
Home page: http://www.pmel.noaa.gov/people/kessler/


[Thread Prev][Thread Next][Index]

Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement