% function [ergend] = pcafunc(struktur, dim)

function [ergend] = pcafunc(struktur, dim)

data = struktur;

size(data)

% PCA: Perform PCA using covariance
%
% data  - MxN matrix of input data transposed
%         M trials
%         N dimension


% PC - each Colum is a PC
% V  - Mx1 matrix 

N=size(data,1);  % Zeilenzahl

% subtract mean from each of the data dimensions 
mn = mean(data,1);

meandata = data - repmat(mn,N,1);



covmat = cov(meandata);
[PC,D] = eig(covmat);

% D diagonalmatrix of eigenvalues

DD=diag(D);

% sort the eigenvalues in decreasing order

[junk,rindices] = sort(DD,'descend');
DD=DD(rindices);
PC=PC(:,rindices);

% dimensions = Zahl der Komponenten

dimensions= dim;

finaleigs = PC(:,1:dimensions);
prefinaldata = finaleigs'*meandata';
% finaldata = prefinaldata'

ergebnis=finaleigs*prefinaldata;

ergend=ergebnis'+repmat(mn,N,1);
