Created
September 5, 2016 06:13
-
-
Save kflu/c8dbb4a365302386109724faa2c15cbe to your computer and use it in GitHub Desktop.
Compute covariance
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
clc; | |
close all; | |
mm = [] | |
E1 = [] | |
E2 = [] | |
for m = 10:50:1000 | |
e1 = 0.0; | |
e2 = 0.0; | |
mm = [mm m]; | |
# averaging the error performance | |
for a = 1:10 | |
n = 20; | |
X = 3 * rand(m,n) - 1.5; | |
C1 = cov(X); | |
# computing covariance feature by feature (column wise inner product) | |
C2 = (1/m) * X' * X; | |
# estimate covariance by computing covariance on each sample and then average | |
C = zeros(n, n); | |
for i = 1:m | |
C += X(i,:)' * X(i, :); | |
end | |
C = (1/m) * C; | |
e1 += (1/m*n) * sum(sum((C1 - C).^2, 1), 2); | |
e2 += (1/m*n) * sum(sum((C2 - C1).^2, 1), 2); | |
end | |
E1 = [E1 e1/10]; | |
E2 = [E2 e2/10]; | |
end | |
hold on; | |
semilogy(mm, E1, '-k'); | |
semilogy(mm, E2, '-xr'); | |
legend("sq err cov = avg cov per sample", "sq err cov = (1/m) * X' * X"); | |
grid on; | |
hold off; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment