# PCA of hyperspectral image data

I have some hyperspectral image data similar to this, and I want to do a PCA on it. The problem: I've never done a PCA, and its specially difficult for me to do it on 3D data.

How can I do it in MATLAB or R? [See also Analyzing 3D data: What can be done? ]

-

## 2 Answers

One simple way to do it is to transform your 3D data into a vector. This is a bit rough but often works fine in practice. Then you can use the prcompfunction from the R base package to compute PCA.

You can also use the "Multilinear Principal Component Analysis of Tensor Objects" (MPCA) proposed by Lu et al. (2008). It answers your question directly, as it does PCA on multidimensional objects. An implementation of their algorithm is available in MATLAB here.

-

You could also have a look at the "hyperspec" package in R. http://hyperspec.r-forge.r-project.org/ has a very clear documentation for dealing with hyperspectral data. I would suggest to use MATLAB if you would like to proceed further than PCA.

-