⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kernelknn.m

📁 我用于脑机接口P300拼写范例中的程序
💻 M
字号:
function [ypred,tabkppv,distance]=kernelknn(xapp,yapp,valY,kernel,kerneloption,X,k)%% knn implementation%% USE : [ypred,tabkppv,distance]=kernelknn(xapp,yapp,valY,kernel,kerneloption,X,k)%% xapp, yapp : learning data% valY : all the Y value possible% kernel : the inner product in the feature space% kerneloption : option of the kernel (gaussian bandwidth or degree of polynomial kernel)% X : data to be classified% k : number of nearest neighbours%% ypred : class of X% tabkppv : [nbpts x nbpts] index of nearest neighbours% distance : [nbpts x nbpts] distance%% Vincent Guigue 08/01/03% check narginif nargin<7  error('too few argumemnts');elseif nargin<7  k=3;else  if mod(k,2)==0    error('k must be odd');  endendif size(xapp,2)~=size(X,2)  error('dimension incompatibility');endndim = size(xapp,2);nptxapp = size(xapp,1);nptX = size(X,1);kxx=diag(svmkernel(xapp,kernel,kerneloption,xapp));kyy=diag(svmkernel(X,kernel,kerneloption,X));kxy=svmkernel(xapp,kernel,kerneloption,X);distance=repmat(kxx,1,nptX)+ repmat(kyy',nptxapp,1)-2*kxy;[val kppv] = sort(distance,1);% bilan sur les k premieres ligneskppv = reshape(kppv(1:k,:),k*nbtest,1);Ykppv = yapp(kppv,1);Ykppv = reshape(Ykppv,k,nbtest);% trouver le plus de reponses identique par colonnetabkppv = Ykppv;vote = [];for i=1:nbtest  for j=1:length(valY)    vote(j,i)=size(find(Ykppv(:,i)==valY(j)),1);  endend[val ind]=max(vote,[],1);ypred = valY(ind);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -