## -RM-359-MR-Principal Component Analysis algorithm

Implementation of the Principal Component Analysis algorithm

OpenWalnut path: core/common/math/PrincipalComponentAnalsis

The Principal Component Analysis (PCA) analyzes the distribution of points within a selection. Firstly it analyzes its main distribution directions (Eigen Vectors). It also puts out how strongly points are distributed within these three ways (Eigen Values). See http://georgemdallas.wordpress.com/2013/10/30/principal-component-analysis-4-dummies-eigenvectors-eigenvalues-and-dimension-reduction/

How it works: At first the class WPrincipleComponentAnalysis.h runs the covariance analysis over the input points. Its result is taken to libeigen in order to get Eigen Values and Eigen Vectors. The code is proposed not to be limited to any sort of plugins.

More Links that help to understand PCA: Desribes PCA: http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf Solving det( A-Lambda*I ) = 0: https://www.scss.tcd.ie/Rozenn.Dahyot/CS1BA1/SolutionEigen.pdf Using the cubic Lambda equation to calculate p and q: http://en.wikipedia.org/wiki/Cubic_function#Reduction_to_a_depressed_cubic Not best but easiest way to solve Lambda: http://en.wikipedia.org/wiki/Cubic_function#Three_real_roots Putting lambdavalues and solving gaussian equations to get Eigen Vectors: https://www.scss.tcd.ie/Rozenn.Dahyot/CS1BA1/SolutionEigen.pdf

*(from redmine: created on 2014-05-02, closed on 2015-03-14)*