22 lines
1.0 KiB
Matlab
Executable File
22 lines
1.0 KiB
Matlab
Executable File
function Kc = knCenter(kn, X, X1, X2)
|
|
% Centerize the data in the kernel space
|
|
% Input:
|
|
% kn: kernel function
|
|
% X: d x n data matrix of which the center in the kernel space is computed
|
|
% X1, X2: d x n1 and d x n2 data matrix. the kernel k(x1,x2) is computed
|
|
% where the origin of the kernel space is the center of phi(X)
|
|
% Ouput:
|
|
% Kc: n1 x n2 kernel matrix between X1 and X2 in kernel space centered by
|
|
% center of phi(X)
|
|
% Written by Mo Chen (sth4nth@gmail.com).
|
|
K = kn(X,X);
|
|
mK = mean(K);
|
|
mmK = mean(mK);
|
|
if nargin == 2 % compute the pairwise centerized version of the kernel of X. eq knCenter(kn,X,X,X)
|
|
Kc = K+mmK-bsxfun(@plus,mK',mK); % Kc = K-M*K-K*M+M*K*M; where M = ones(n,n)/n;
|
|
elseif nargin == 3 % compute the norms (k(x,x)) of X1 w.r.t. the center of X as the origin. eq diag(knCenter(kn,X,X1,X1))
|
|
Kc = kn(X1)+mmK-2*mean(kn(X,X1));
|
|
elseif nargin == 4 % compute the kernel of X1 and X2 w.r.t. the center of X as the origin
|
|
Kc = kn(X1,X2)+mmK-bsxfun(@plus,mean(kn(X,X1))',mean(kn(X,X2)));
|
|
end
|