n = 1000; ds = [0:5]; for k = 1:length(ds) d = ds(k); % generate data: x = randn(n, 1); y = randn(n, 1); y(1:n/2) = y(1:n/2) - d; y(1+n/2:end) = y(1+n/2:end) + d; % scatter plot of data: subplot(2, 2, 1) scatter(x, y, 'filled', 'MarkerEdgeColor', 'white') title(sprintf('d=%g', d)) xlabel('x') ylabel('y') % histogram of data: subplot(2, 2, 3) hist(x, 20) xlabel('x') % pca: cv = cov([x y]); [ev en] = eig(cv); [en inx] = sort(diag(en), 'descend'); nc = [x y]*ev(:,inx); % scatter in new coordinates: subplot(2, 2, 2) scatter(nc(:, 1), nc(:, 2), 'filled', 'MarkerEdgeColor', 'white') title(sprintf('d=%g', d)) xlabel('pca 1') ylabel('pca 2') % histogram of data: subplot(2, 2, 4) hist(nc(:, 1), 20) xlabel('pca 1') if d == 2 savefigpdf(gcf, 'pca2d-2.pdf', 15, 15); end pause(1.0) end