function [y DCy cpu] = NNKlite(P,T,PT,NFS,K) if nargin < 5 K = 5; end [N na] = size(P); n = size(PT,1); [q, Q, cs, class] = nc(T); % N = number of elements in training set % n = number of elements in testing set % na = number of attributes (=features) % q = number of classes % Q = classes vector if nargin < 4 for i = 1:q NFS{i} = 1:na; end end c(q) = 0; Y(n) = 0; DCY(n) = 0; t = cputime; for i = 1:n % Do this for every element to be classified X = PT(i,:); % Test element d = []; % Reset distance matrix for j = 1:q d = [d; sum((rm(X(NFS{j}),cs(j),1) - P(class{j},:)).^2,2) rm(j,cs(j),1)]; % This is the distance matrix, formed for each class j end ds = ksr(d,K); % k smallest rows of distance matrix for j = 1:q c(j) = sum(ds(:,2)==j); % Class counter end [M ind] = max(c); DCY(i) = M/(sum(c)); Y(i) = Q(ind); end cpu = cputime - t; y = Y; DCy = DCY;