У меня есть матрица A, состоящая из 200 векторов размера d.
Я хочу, чтобы матрица B, состоящая из 4096 векторов, была классифицирована в эти точки в соответствии с правилом ближайшего расстояния.
Таким образом, результат должен иметь строки размера B с идентификатором (от 1 до 200), к которому он принадлежит.
Я написал этот код с помощью циклов 2 for
, и для его вычисления требуется много времени.
for i = 1:4096
counter = 1;
vector1 = FaceImage(i,:);
vector2 = Centroids(1,:);
distance = pdist( [ vector1 ; vector2] , 'euclidean' );
for j = 2:200
vector2 = Centroids(j,:);
temp = pdist( [ vector1 ; vector2] , 'euclidean' );
if temp < distance
distance = temp;
counter = j;
end
end
Histogram( i ) = counter;
end
Может ли кто-нибудь помочь мне повысить эффективность приведенного выше кода ... или, возможно, предложить мне встроенную функцию?
Спасибо