


FORMAT [C,C_s,C_ss] = Centre_kernel(K,K_s,K_ss) This function centres the kernel matrix using only the training data __________________________________________________________________________ Copyright (C) 2011 Machine Learning & Neuroimaging Laboratory


0001 function [C,C_s,C_ss] = prt_centre_kernel(K,K_s,K_ss) 0002 0003 % FORMAT [C,C_s,C_ss] = Centre_kernel(K,K_s,K_ss) 0004 % 0005 % This function centres the kernel matrix using only the training data 0006 %__________________________________________________________________________ 0007 % Copyright (C) 2011 Machine Learning & Neuroimaging Laboratory 0008 0009 % Written by D. Hardoon, A. Marquand and J. Mourao-Miranda 0010 % Id:$ 0011 0012 if iscell(K), K = K{:}; end 0013 if iscell(K_s), K_s = K_s{:}; end 0014 if iscell(K_ss), K_ss = K_ss{:}; end 0015 0016 l = size(K,1); 0017 j = ones(l,1); 0018 C = K - (j*j'*K)/l - (K*j*j')/l + ((j'*K*j)*j*j')/(l^2); 0019 0020 if( nargin > 1 ) 0021 tk = (1/l)*sum(K,1); % (1 x l) 0022 tl = ones(size(K_s,1),1); % (n x 1) 0023 C_s = K_s - ( tl * tk); % ( n x l ) 0024 tk2 = (1/(size(K_s,2)))*sum(C_s,2); % ( n x 1 ) 0025 C_s = C_s - (tk2 * j'); % ( n x l ) 0026 0027 % Two equivalent ways to achieve the same thing 0028 %C_s = K_s - repmat(sum(K),size(K_s,1),1)/l - repmat(sum(K_s,2),1,size(K_s,2))/size(K_s,2) + repmat(j'*K*j,size(K_s,1),size(K_s,2))/(l^2); 0029 %C_s = K_s - (tl*sum(K))/l - (sum(K_s,2)*j')/size(K_s,2) + ((j'*K*j)*tl*j')/(l^2); 0030 0031 if nargin > 2 0032 ttj = ones(size(K_ss,1),1); 0033 C_ss = K_ss - (sum(K_s,2)*ttj')/l - (ttj*sum(K_s,2)')/l + ((j'*K*j)*ttj*ttj')/(l^2); 0034 end 0035 end 0036 0037 C={C}; 0038 C_s={C_s}; 0039 C_ss={C_ss};