function err=qhtknn(X,Y,K)
data=X;
[mm,nn]=size(X);
Y0=Y;
[m0,n0]=size(Y);
t=[1 2 3];%3类向量
ch=randperm(mm);%随机排列1—mm
err=0;
for i=1:10
Y1=Y0;
b=ch(1+(i-1)*mm/10:i*mm/10);
X1=X(b,:);
X(b,:)=[]; %赋空
Y1(b,:)=[];%赋空
c=X;
[m,n]=size(X1); %m=15,n=4
[m1,n]=size(c);%m1=135,n=4
for ii=1:m
for j=1:m1
ss(j,:)=sum((X1(ii,:)-c(j,:)).^2);
end
[z1,z2]=sort(ss);%ss为m1*1矩阵,sort由小到大排序
hh=hist(Y1(z2(1:K)),t);%K近邻
[w,best]=max(hh);
yy(i,ii)=t(best);%保存修改的分类结果
end
err=err+sum(Y0(b,:)~=yy(i,:)');%yy为1*15的矩阵
X=data;
end
err=err/mm;