EOF/PCA analysis of a vector (u- and v-component of ocean currents) --- oceanography/meteorology

29 vues (au cours des 30 derniers jours)
I have done EOF/PCA analysis for scalar fields (e.g. SST) with the princomp function, however I am struggling with the concept of how to do an EOF analysis of vector data (e.g. analyzing the u- and v- component of ocean current data at the same time). I understand that it is possible to represent both quantities as a complex number, however I am not sure about the practical (=programming) approach. Most literature that I found seems to cover only the theory, but there are not many 'HOW TO DO' sources out there. My idea was to just combine the u and v fields in one matrix along one of the spatial axis (e.g. combining a u (20E-40E,20S-20N) and v field (20E-40E,20S-20N) to a (20E-40E,40S-40N) field), calculate the EOF and afterwards split the eigenvector matrix into the u- and v- component and plot the resulting vectors. In this case, is it possible to interpret the eigenvalues + eigenvectors in the same way as you would doing an EOF analysis on a scalar field? It would be great if anyone could point me to some step-by-step introduction to this type of problem with princomp or knows maybe some software/packages other than princomp that could deal with this type of analysis comfortably. Thank you very much in advance!

Réponses (3)

Ben Williams
Ben Williams le 15 Mar 2011
Hello Ramirez,
I am trying to do something almost identical, but with bathymetry. For a 1D EOF (i.e. not a complex EOF), I found the following absolutely brilliant. It is not a 2D EOF analysis, but at least it helps on the path to a 2D EOF analysis. If you get any references or tips for your EOF, I would love to hear.
Thanks,
Ben.
% see https://pmc.ucsc.edu/~dmk/notes/EOFs/EOFs.html % Doing EOF analysis in 5 minutes or less: % This is the quickstart to doing EOF analysis.
% 1. Put your data into a matrix so that the rows indicate temporal % Development and the columns are variables or spatial data points. % The temporal relationship between rows is unimportant (ie. doesn't % have to be uniform). Same for the spatial relationship between columns.
% 2. Detrend the columns of the resulting matrix. Some EOF routines do % this for you, but I prefer to do it separately.
% 3. Use singular value decomposition (svd) to break up your data into 3 matrices: % Z = U * D * Vt % where U and V are orthonormal and D is diagonal. Then, % EOFs = V % ECs = U * D % covariance matrix = ECst * ECs / (n-1) = D2 / (n-1) % communalities matrix = ECs * ECst
% That is really all there is to it. The EOFs are really the columns of % the EOFs matrix.
% spatial EOFs are columns in V % temporal EOF's are columns in U % Diagonal of eigenvalues (S) gives the variance of each EOF for the total % bathymetry change.

Antonio
Antonio le 24 Juil 2012
Dear Ramirez, I'm also interested in this issue. I also found in some paper (e.g. http://www.rsmas.miami.edu/assets/pdfs/upper-ocean-dynamics/Kaihatu_etal_1998_JAOT.pdf ) that current vector components are EOF decomposed togheter by using complex-EOF analysis. I think that one possible way is to transform the u-v reals couple in a single complex number and then analyze it, for example, with tools for Complex-EOFs you can find for example the PCAtool in matlab file-exchange. Did you proceed in this sense? Please let me know, Antonio

Andreas Reul
Andreas Reul le 21 Mai 2020
Dear all.
I also looking for example of how to calculate EOF on U and V data.

Catégories

En savoir plus sur Frequently-used Algorithms dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by