input: matrice C 2xN (punti 2D)
output: matrice C 2xM (punti 2D) con punti uguali o inferiori.
Diciamo che abbiamo una matrice C 2xN che contiene diversi punti 2D, e sembra qualcosa del genere:
Quellochevogliamoèraggruppareipunti"vicini" a un punto, misurato dalla media degli altri punti. Ad esempio, nella seconda immagine, ogni gruppo di cerchi blu sarà un punto, la coordinata del punto sarà il punto medio di tutti i punti nel cerchio blu. anche dicendo "vicino", intendo che: la loro distanza l'una dall'altra sarà più piccola del DELTA (noto scalare). L'output desiderato è:
Riguardo al tempo di esecuzione dell'algoritmo, non ho la richiesta di limite superiore ma chiamo quel metodo più volte ...
Sto usando Matlab e quello che ho provato è questo:
function C = ReduceClosePoints(C ,l_boundry)
x_size = abs(l_boundry(1,1)-l_boundry(1,2)); %220
DELTA = x_size/10;
T = [];
for i=1:size(C,2)
sum = C(:,i);
n=1;
for j=1:size(C,2)
if i~=j %not same point
D = DistancePointToPoint(C(:,i),C(:,j));
if D < DELTA
sum = sum + C(:,j);
n=n+1;
end
end
end
sum = sum./n; %new point -> save in T matrix
T = [T sum];
end
C = T;
end
E non funziona :(
Anche io sono nuovo di Matlab.
Grazie per il tuo aiuto !!