How can I perform a PCA analysis over 3D data?

Hello everyone. I have a 100*50*20 matrix which contains measurements over an area of space. 100 is the number of latitudes, 50 is the number of longitudes and 20 is the number of times each measurement has been performed. I want to perform PCA over this data, but I would like to obtain eigensurfaces instead of eigenvectors, the regular PCA works just fine over a belt of constant latitude or longitude with all the 20 times; however, if I try to use it over the 3D matrix, I get an error. My next attempt has been to use reshape to merge latitude and longitude in a vector. The obtained coeff matrix obtained has a size of 20*20, not something I can plot over a map.
Can anyone please tell me if I can plot the eigensurfaces to see a 2D image for each time? Thanks.

 Accepted Answer

See my attached 3-D PCA demo. My 3-D array is an RGB image.

6 Comments

This is what I was looking for. Tank you very much.
Thank you so much for this file Image Analyst. Very helpful. Please do you have anything for 3D data compression? I am trying to find compression algorithms (like 3D DWT, 3D DCT etc) to compress an Aviris data in Matlab.
To compress just throw away some of the less important PCs.
Thank you! I understand but I ment if you did any other matlab 3D data analyzer / compression algorithms. For example the DWT, DCT etc.
I have not worked in the compression field. The existing tried and true methods built into other functions are fine with me and I have no desire or need to improve upon those. They meet my needs so I don't need to research better ones.
I am trying to do a similar thing. I have a matrix of 200*500*3, where 200*500 is the data for corresponding 3 features (like a 3D plot). I want to find out the relative importance of the 3 features. Do you have any suggestions how should I proceed?
Thanks

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!