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

📄 knn.m

📁 我用于脑机接口P300拼写范例中的程序
💻 M
字号:
function [ypred,tabkppv,distance]=knn(xapp,yapp,valY,X,k)%% knn implementation%% USE : [ypred,tabkppv,distance]=knn(xapp,yapp,valY,X,k)%% xapp, yapp : learning data% valY : all the Y value possible% 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<4  error('too few argumemnts');elseif nargin<5  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);% distance de X a xapp :mat1 =  repmat(xapp, nptX,1);%mat21 = reshape(X',1,nptX*ndim)mat22 = repmat(X,1,nptxapp)';mat2 = reshape(mat22 ,ndim, nptxapp*nptX)';distance = mat1 - mat2 ;distance = sum(distance.^2,2);distance = reshape(distance,nptxapp,nptX);keyboard[val kppv] = sort(distance,1);% bilan sur les k premieres ligneskppv = reshape(kppv(1:k,:),k*nptX,1);Ykppv = yapp(kppv,1);Ykppv = reshape(Ykppv,k,nptX);% trouver le plus de reponses identique par colonnetabkppv = Ykppv;vote = [];for i=1:nptX  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 + -