19 lines
642 B
Mathematica
19 lines
642 B
Mathematica
|
|
function eigenfaces_scatter(images, indices);
|
||
|
|
|
||
|
|
[w, h, nExpressions, nIndividuals]=size(images);
|
||
|
|
X=reshape(images,[w*h,nIndividuals*nExpressions]);
|
||
|
|
avg=mean(X,2);
|
||
|
|
Xd=bsxfun(@minus,X,avg);
|
||
|
|
[U,S,V]=svd(Xd,0);
|
||
|
|
scores=U(:,indices)'*Xd;
|
||
|
|
%normalize scores and samples
|
||
|
|
%scores=bsxfun(@rdivide,scores,sqrt(sum(abs(scores).^2)));
|
||
|
|
|
||
|
|
if length(indices) == 3
|
||
|
|
scatter3(scores(1,:),scores(2,:),scores(3,:),50*ones(size(scores(1,:))),kron(1:nIndividuals,ones(1,nExpressions)));
|
||
|
|
elseif length(indices) == 2
|
||
|
|
scatter(scores(1,:),scores(2,:),50*ones(size(scores(1,:))),kron(1:nIndividuals,ones(1,nExpressions)));
|
||
|
|
else
|
||
|
|
error('wrong indices size');
|
||
|
|
end
|