Skip to main content

Using PCA on Three Dimensional Dataset

In this work, We use PCA three dimensional data. 

Matlab Code

% PCA Model

clear all, clc , close all
hold on
axis equal
axis([-2 2 -2 2 -2 2])
% Step 1: Get some data
X = [1 2 -1 -2 0; 0.2 0 0.1 0.2 -0.4; 1.2 0.3 -1 -0.1 -0.4]';
% Step 2: Substract the mean
plot3(X(:,1),X(:,2),X(:,3),'ko');
XAdjust = X-repmat(mean(X),size(X,1),1);
plot3(XAdjust(:,1),XAdjust(:,2),XAdjust(:,3),'ro');
% Step 3: Calculate the covariance matrix
CM = cov(X);
% Step 4: Eigenvalue and Eigenvector
[V D]= eig(CM);
% Step 5: Choosing component
f1 = V(:,1)';
f2 = V(:,2)';
f3 = V(:,3)';
F=[f1; f2; f3];
A = 2*V;
plot3([-A(1,1),A(1,1)],[-A(1,2),A(1,2)],[-A(1,3) A(1,3)],'b:');
plot3([-A(2,1),A(2,1)],[-A(2,2),A(2,2)],[-A(2,3) A(2,3)],'b:');
plot3([-A(3,1),A(3,1)],[-A(3,2),A(3,2)],[-A(3,3) A(3,3)],'b:');
title('Orjinal data and Mean Adjust Data')
% Step 6: Deriving the dataset
Pc1 = f1*XAdjust';
Pc2 = f2*XAdjust';
Pc3 = f3*XAdjust';
Y = [Pc1' Pc2' Pc3'];

figure
hold on
axis equal
axis([-2 2 -2 2 -2 2])
plot3(Y(:,1),Y(:,2),Y(:,3),'gd');

Cy = cov(Y);
[Vy Dy] = eig(Cy);
A = 2*V;
plot3([-A(1,1),A(1,1)],[-A(1,2),A(1,2)],[-A(1,3) A(1,3)],'b:');
plot3([-A(2,1),A(2,1)],[-A(2,2),A(2,2)],[-A(2,3) A(2,3)],'b:');
plot3([-A(3,1),A(3,1)],[-A(3,2),A(3,2)],[-A(3,3) A(3,3)],'b:');

OUTPUTS

Original data ve Adjusted Data

PCA Data

From a different Angle

Comments

Popular posts from this blog

Use offline WFDB Toolbox for MATLAB

The WFDB Toolbox for MATLAB and Octave is a collection of functions for reading, writing, and processing physiologic signals and time series in the formats used by PhysioBank databases (among others). The Toolbox is compatible with 64-bit MATLAB and GNU Octave on GNU/Linux, Mac OS X, and MS-Windows. To quick start to use offline WFDB Toolbox for Matlab http://physionet.org/physiotools/matlab/wfdb-app-matlab/wfdb-app-toolbox-0-9-6-1.zip  download this file.  Unzip file where you want. When unzip the file, mcode folder will create.  Open MATLAB.  Go where you unzip the file.  Write command line addpath(pwd) Finally write command line again savepath  You can use WFDB Toolbox offline anymore.  [tm,sig]=rdsamp('mitdb/100',1); plot(tm,sig);

ImageDatastore

ImageDatastore is a useful function and can get a collection of image files, where each individual image fits in memory, but the entire collection of images does not necessarily fit.