diff --git a/Ex01_testPCA.m b/Ex01_testPCA.m index 1181070..a9e0b77 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 @@ -36,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