我正在尝试实施Johnson-Lindenstrauss lemma。我在这里搜索了伪代码,但找不到任何东西。
我不知道我是否正确实施了它。我只希望你们了解引理的人请帮我检查我的代码,并就正确的 matlab 实现向我提供建议。
n = 2;
d = 4;
k = 2;
G = rand(n,d);
epsilon = sqrt(log(n)/k);
% Projection in dim k << d
% Defining P (k x d)
P = randn(k,d);
% Projecting down to k-dim
proj = P.*G;
u = proj(:,1);
v = proj(:,2);
% u = P * G(:,5);
% v = P * G(:,36);
norm(G(:,1)-G(:,2))^2 * k * (1-epsilon);
norm(u - v)^2;
norm(G(:,1)-G(:,2))^2 * k * (1+epsilon);