%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % function knnClassify() % z.li, 10-20-2008 % kNN classifier % function dependency: % - n/a % input: % q - query vector, m x d % x - known vector, n x d % y - known labels, n x 1 % output: % id - m x 1, recognized ids %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %function [id]=knnClassify(q, x, y) function [id]=knnClassify(q, x, y) dbg = 0; if dbg x = [ 19.0716 -6.6704 38.0986 19.0710 -6.6231 38.0007 19.0650 -6.6451 37.9860 19.0691 -6.6377 37.9813 17.2515 -4.0391 28.6389 17.2501 -4.0056 28.6514 17.2565 -4.0477 28.7316 17.2462 -4.0587 28.7206 10.7764 -6.7628 37.3780 10.7864 -6.8147 37.3535 10.7827 -6.7286 37.4516 10.7873 -6.7713 37.3364]; y = [1 1 1 1 2 2 2 2 3 3 3 3]'; q = [ 19.0669 -6.6518 38.0185 17.2558 -4.0390 28.6926 10.7806 -6.7540 37.5014]; end [m, d]=size(q); [n,d]=size(x); for k=1:m dv = x - repmat(q(k,:), n, 1); for j=1:n d(j)=norm(dv(j,:)); end [dmin, offs] = min(d); id(k) = y(offs); end return;