


approximation by principal component analysis THIS IS NO USER FUNCTION


0001 function out = approxPca(hcMatrix, par) 0002 % approximation by principal component analysis 0003 % 0004 % THIS IS NO USER FUNCTION 0005 0006 % The elk-library: convex geometry applied to crystallization modeling. 0007 % Copyright (C) 2013 Alexander Reinhold 0008 % 0009 % This program is free software: you can redistribute it and/or modify it 0010 % under the terms of the GNU General Public License as published by the 0011 % Free Software Foundation, either version 3 of the License, or (at your 0012 % option) any later version. 0013 % 0014 % This program is distributed in the hope that it will be useful, but 0015 % WITHOUT ANY WARRANTY; without even the implied warranty of 0016 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0017 % General Public License for more details. 0018 % 0019 % You should have received a copy of the GNU General Public License along 0020 % with this program. If not, see <http://www.gnu.org/licenses/>. 0021 0022 %% perform PCA 0023 % svd with covariance matrix 0024 % X = [dataOriginal.positionMatrix, -1*dataOriginal.positionMatrix]; 0025 % [u,s,v] = svd(X*X', 0); 0026 [u,s,v] = svd(hcMatrix); 0027 % [u,s,v] = svd(dataOriginal.positionMatrix', 0); 0028 out.mappingReducedToEmbedding = u(:, 1:par.targetDim); 0029 out.projectionMatrix = u(:, 1:par.targetDim) * u(:, 1:par.targetDim)'; 0030 0031 0032 % v(:, 1:par.targetDim) 0033 % v(:, 1:par.targetDim)'*v(:, 1:par.targetDim) 0034 % v(:, 1:par.targetDim)*v(:, 1:par.targetDim)' 0035 % v = orth(out.projectionMatrix) 0036 % v'*v 0037 % pinv(orth(out.projectionMatrix)) 0038 0039 end