Skip to content

Instantly share code, notes, and snippets.

@kflu
Created September 5, 2016 06:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kflu/c8dbb4a365302386109724faa2c15cbe to your computer and use it in GitHub Desktop.
Save kflu/c8dbb4a365302386109724faa2c15cbe to your computer and use it in GitHub Desktop.
Compute covariance
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