function T=translation(tc,c,t) [Mv Nd] = size(tc); % --- Estimate the context distribution --------------------------------------- N = sum(tc,1); tf=(inv(diag(N))*tc')'; Q=diag(sparse(1./sum(tf,2)))*tf*tf'; % --- Fisher Geodesic Distance ------------------------------------------------ sumsqrtterm = (Q.^.5)*(Q.^.5)'; sumsqrtterm(sumsqrtterm>1) = 1; sumsqrtterm(sumsqrtterm<0) = 0; D2 = acos(sumsqrtterm).^2; % --- Optional Feature selection (on D) --------------------------------------- % --- Create graph ------------------------------------------------------------ E = exp(-c * D2); % --- Laplacian --------------------------------------------------------------- deg = diag(sum(E,2)); L = deg-E; % jvd: (Normalized) L = inv(sqrt(deg)) * (L) * inv(sqrt(deg)); % --- Heat kernel ------------------------------------------------------------- H = expm(-t * L); %H16 = expm(-0.16 * L); %H = H16^6; % jvd: t=-0.96 %H = H*H16; % jvd: t=-1.12 %H = H*H16; % jvd: t=-1.28 %H = H*H16; % jvd: t=-1.44 %H = H*H16; % jvd: t=-1.60 %H = H*H16; % jvd: t=-1.76 % --- Optional Feature selection (on T) --------------------------------------- % jvd: make sure normalize last T = normalizeRows(H);