У меня есть следующий:Как манипулировать сложение и умножение матрицы для вычисления евклидовых расстояний?
A = [1 2 3; 4 5 6; 7 8 9];
B = [10 11 12; 13 14 15];
[N1, D1] = size(A);
[N2, D2] = size(B);
A_sq = sum(A.^2, 2);
B_sq = sum(B.^2, 2)';
D = A_sq(:,ones(1,N2)) + B_sq(ones(1,N1),:) - 2.*(A*B');
где D является N1 х D1 матрицы.
Я хочу написать выражение для D в одном шаге, то есть, что-то вроде этого (это для иллюстрации, но она должна вычислить же евклидово расстояние, как приведенный выше код):
D = sum(A - B).^2;
I оценят любые рекомендации.
Этот код несколько трудно поддаётся - на каком эвклидовом расстоянии вы пытаетесь вычислить? –
В k-значении кластеризации вычисляется расстояние между точками данных и центроидами. A имеет больше строк, чем B, но обе имеют одинаковый размер. –
ОК, так что расстояние между каждым вектором в A и каждым вектором в B? –