Untitled
unknown
plain_text
a year ago
1.5 kB
5
Indexable
function D = calcola_distanze(punti)
% Input: punti è una matrice PxN dove:
% - P è il numero di punti
% - N è la dimensione dello spazio
% Output: D è una matrice PxP delle distanze euclidee
P = size(punti, 1);
D = zeros(P, P);
for i= 1:P
for j= i:P
diff = punti(i, :) - punti(j, :); %[1 2] - [3 4]
dist = sqrt(sum(diff.^2)));
D(i,j) = dist;
D(j,i) = dist;
end
end
end
N = input('Inserisci la dimensione dello spazio (N): ');
P = input('Inserisci il numero di punti (P): ');
punti = 10 * rand(P,N);
D = calcola_distanze(punti);
%D(:)
[maxDistanza, indice] = max(D(:));
[i, j] = ind2sub(size(D), indice); %ind2sub(size(D), indice);
%ind2sub([3 3], 3)
Indici lineari: Matrice originale:
1 4 7 (1,1) (1,2) (1,3)
2 5 8 (2,1) (2,2) (2,3)
3 6 9 (3,1) (3,2) (3,3)
Se D = [0 2 4
2 0 3
4 3 0]
D(:) = [0 % indice 1
2 % indice 2
4 % indice 3
2 % indice 4
0 % indice 5
3 % indice 6
4 % indice 7
3 % indice 8
0] % indice 9
numCoppie = sum(D(:) > pi)/2;
Se D = [0 4 5
4 0 2
5 2 0]
D(:) > pi diventa:
[0 % 0 < π
1 % 4 > π
1 % 5 > π
1 % 4 > π
0 % 0 < π
0 % 2 < π
1 % 5 > π
0 % 2 < π
0] % 0 < π
Editor is loading...
Leave a Comment