@@ -3,6 +3,9 @@ bin/ | |||||
out/ | out/ | ||||
resources/ | resources/ | ||||
# matlab | |||||
*.m~ | |||||
# hpc related | # hpc related | ||||
# eclipse | # eclipse | ||||
@@ -1,18 +0,0 @@ | |||||
function D = distXY(X, Y) | |||||
%distXY Calculate an m x n Euclidean distance matrix 𝐷 of X and Y | |||||
% | |||||
% Calculate an m x n Euclidean distance matrix 𝐷 between two sets points 𝑋 and 𝑌 of 𝑚 and 𝑛 points respectively | |||||
% X : [m x d] Corpus data points (d dimensions) | |||||
% Y : [n x d] Query data poinsts (d dimensions) | |||||
% D : [m x n] Distance matrix where D(i,j) the distance of X(i) and Y(j) | |||||
[m d1] = size(X); | |||||
[n d2] = size(Y); | |||||
if d1 == d2 | |||||
d = d1; | |||||
else | |||||
error('Corpus(X) and Query(Y) data points have to have the same dimensions'); | |||||
end | |||||
%D = (X.*X) * ones(d,1)*ones(1,n) -2 * X*Y.' + ones(m,1)*ones(1,d) * (Y.*Y).'; | |||||
D = sum(X.^2, 2) - 2 * X*Y.' + sum(Y.^2, 2).' | |||||
end |
@@ -1,29 +0,0 @@ | |||||
function [I, D] = kNN(X, Y, k) | |||||
%kNN return the k-nearest neighbors Of Y into dataset X | |||||
% | |||||
% Outputs: | |||||
% I : [n x k] The indexes of X where the nearest neighbors of Y lies | |||||
% D : [n x k] The distances of each neighbor | |||||
% | |||||
% Inputs: | |||||
% X : [m x d] Corpus data points (d dimensions) | |||||
% Y : [n x d] Query data points (d dimensions) | |||||
% k : [scalar] The number of neighbors | |||||
disMat = distXY(X, Y); | |||||
[m, n] = size(disMat); | |||||
II = repmat([1:k].', 1, n); % init the min algorithm | |||||
DD = disMat(1:k,:); | |||||
for i = k+1:m | |||||
for j = 1:n | |||||
[c, ci] = tail(DD); % calculate candidate and canditate index | |||||
if disMat(i,j) < c(j) | |||||
DD() | |||||
end | |||||
end | |||||
end | |||||
I = II.'; | |||||
D = DD.'; | |||||
end | |||||
@@ -1,14 +0,0 @@ | |||||
function [M, I] = maxIdx(Vec) | |||||
%tail Calculate the max,index pair of each Vec(:) | |||||
% | |||||
n = length(Vec); | |||||
I = 0; | |||||
M = -1; | |||||
for j = 1:n | |||||
if M < Vec(j) | |||||
M(j) = Mat(i,j); | |||||
I(j) = i; | |||||
end | |||||
end | |||||
end | |||||