Hi Fabian -
There is no way to find only some of the eigenvalues. I think that is
true in theory (please correct me if I am wrong), but it is certainly
true of these routines. One way to see this is that inverting the
covariance matrix employs a series of operations on the whole matrix
(turning it into tridiagonal form), that inherently find all the
eigenvalues (or at least do all the work up to a final few trivial
steps). Another (equivalent) point of view is that when the singular
value decomposition is written out, it is seen to involve matrix
multiplications that inherently use all rows and all columns.
Somehow I doubt if there are really 3960 significant months worth of SST
information in the North Pacific (is this a model or observations?). It
seems likely that interannual or decadal variations are of interest in
such a case, so the problem could be greatly reduced by taking annual
averages before doing the EOFs.
The other thing to note is that the number of non-zero eigenvalues is
the MINIMUM of (number of timesteps, number of spatial locations). If
you have more timesteps than locations, the calculation is wasting CPU
and memory and disk space with lots of identically-zero eigenvalues and
EOFs. I have routines to reverse the array, find the eigenvalues/EOFs,
and then reinterpret as the original, but these are fortran, not Ferret.
Let me know if you'd like to use this code (unsupported/no guarantee!).
Billy K
On 17Aug 2007, at 9:38 AM, Fabian Lienert wrote:
Hi Ferreters,
Is it possible to calculate only the first couple of EOFs using
the functions eof_space and eof_tfunc?
Or is it necessary to know all EOFs in order to judge which one is of
first importance?
I get an error in efcn_compute() while allocating 570MB of memory while
analyzing 3960 months of SSTs in the northern Pacific.
Any help appreciated. Thank you.
Fabian