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

29 次查看(过去 30 天)
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!

回答(3 个)

Ben Williams
Ben Williams 2011-3-15
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 2012-7-24
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 2020-5-21
Dear all.
I also looking for example of how to calculate EOF on U and V data.

类别

Help CenterFile Exchange 中查找有关 Frequently-used Algorithms 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by