www.pudn.com > standardmodelrelease.zip > CLSnnC.m
function [labels,weights,firstindeces] = CLSnnC(X,Model);
%function [labels,weights,firstindeces] = CLSnnC(X,Model);
%
%X contains the data-points to be classified as COLUMNS, i.e., it is nfeatures \times nexamples
%Model is the model returned by CLSnn
%labels are the predicted labels
%
%
%Inputs:
%Model.k
%Model.trainX
%Model.trainy
%
%See also CLSnn
if isfield(Model,'deg')
deg = Model.deg;
else
deg = 2;
end
len1 = size(X,2);
len2 = size(Model.trainX,2);
if deg==2
X2 = sum((X).^2,1);
Z2 = sum((Model.trainX).^2,1);
distance = (repmat(Z2,len1,1)+repmat(X2',1,len2)-2*X'*Model.trainX)';
else
distance = zeros(len2,len1);
for i = 1:len1,
for j = 1:len2,
distance(j,i) = sum(abs(X(:,i)-Model.trainX(:,j)).^deg);
end
end
end
[sorted,index] = sort(distance);
yy = Model.trainy(index);
if Model.k>1
weights = mean(yy(1:Model.k,:),1)';
disp('kNN weights::just sign no voting');
labels = sign(weights);
else
labels = yy(1,:)';
weights = 1./(sorted(1,:)'+eps);
end
if nargout>2
numindeces = min(size(sorted,1),Model.numindeces);
firstindeces = yy(1:numindeces,:)';
end