From ab2717a82294de580c73f9e6f2c24e101bc531a2 Mon Sep 17 00:00:00 2001 From: melanielele Date: Fri, 30 Oct 2020 10:49:31 -0400 Subject: [PATCH 1/2] comment on Ex01_testPCA.m --- Ex01_testPCA.m | 1 + 1 file changed, 1 insertion(+) diff --git a/Ex01_testPCA.m b/Ex01_testPCA.m index 1181070..5bafd1a 100644 --- a/Ex01_testPCA.m +++ b/Ex01_testPCA.m @@ -1,5 +1,6 @@ % Principal component analysis % +% Melanie Zhao: zhiyue.zhao@emory.edu % BMI500 Course % Lecture: An Introduction to Blind Source Separation and Independent Component Analysis % By: R. Sameni From f6edf0a0328362654f5d6e593ab1bab2b1afc239 Mon Sep 17 00:00:00 2001 From: melanielele Date: Fri, 30 Oct 2020 12:28:02 -0400 Subject: [PATCH 2/2] Add Class code --- Ex01_testPCA.m | 45 +++++++++++++++++++++++++++++ Ex02_testEigenAnalysisPowerMethod.m | 1 + 2 files changed, 46 insertions(+) diff --git a/Ex01_testPCA.m b/Ex01_testPCA.m index 5bafd1a..a9e0b77 100644 --- a/Ex01_testPCA.m +++ b/Ex01_testPCA.m @@ -37,3 +37,48 @@ N = size(x, 1); % The number of channels T = size(x, 2); % The number of samples per channel +% plot the channels +% eog1 eog2 eog3-23 24 25 +%ecg 26 +PlotECG(x,4,'b',fs,'Raw Data Channel') + +% remove the channel means +x_demeaned=x-mean(x,2) * ones(1,size(x,2)); + +Cx = cov(x_demeaned'); + +% eIGENVALUE DECOMPOSITION +[V,D]=eig(Cx,'Vector'); + + +x_var = var(x_demeaned,[],2); +x_var2=diag(Cx); + +y=V' * x_demeaned; +Cy= cov(y'); +y_var = diag(Cy); + + +x_total_energy = sum(x_var) +Cx_trace=trace(Cx) +eigenvale_sum=sum(D) +Cy_trace = trace(Cy) + +x_partial_energy = 100.0 * cumsum(D(end:-1:1))./x_total_energy + + +th=99.9; + +N_eigs_to_keep = find(x_partial_energy <= th,1,'last') + + +% first 19 eigenvalue, re compress the x + + + +x_compressed = V(:,N-N_eigs_to_keep +1 :N)* y(N-N_eigs_to_keep + 1 :N,:) + + + + + diff --git a/Ex02_testEigenAnalysisPowerMethod.m b/Ex02_testEigenAnalysisPowerMethod.m index f1d95be..031402e 100644 --- a/Ex02_testEigenAnalysisPowerMethod.m +++ b/Ex02_testEigenAnalysisPowerMethod.m @@ -24,3 +24,4 @@ % Cx = x * x'; Cx = cov(x'); +% check on eigen value decomposition work \ No newline at end of file