Функция для этого в matlab называется pdist.К сожалению, он мучительно медленный и не учитывает возможности векторизации Matlabs.
Ниже приведен код, который я написал для проекта.Дайте мне знать, какую скорость вы получите.
Qx=repmat(dot(x,x,2),1,size(x,1));
D=sqrt(Qx+Qx'-2*x*x');
Обратите внимание, что это будет работать, только если ваши точки данных находятся в строках, а ваши измерения - в столбцах.Например, допустим, у меня 256 точек данных и 100000 измерений, а затем на моем компьютере Mac используется x = rand (256,100000), а приведенный выше код создает матрицу 256x256 примерно за полсекунды.