knn.m

来自「matlab 源码 KNN classification」· M 代码 · 共 36 行

M
36
字号
function class = knn(query,ref_vect,ref_label,k)
% ---------------------------------------
% query     : query point
% ref_vect  : reference vectors
% ref_label : labels of reference vectors
% k         : k-nearest
% class     : matched class
% ---------------------------------------

[ref_num,dim] = size(ref_vect);
class_num = max(ref_label);

% Calculate Eculid distances
for i=1:ref_num
   dis(i) = norm(ref_vect(i,:)-query);
end

% Sort reference vectors in nearest order
[tmp,index] = sort(dis);

% Extract first k nearest labels
if k > length(index)
    k = length(index);
end

label = ref_label(index(1:k));

% Count labels
class_cnt = zeros(1,class_num); 
for i=1:k
   class_cnt(label(i)) = class_cnt(label(i))+1;
end

% Return class label with maximum counts
[hit,class] = max(class_cnt);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?