Анализ прокрустов с помощью NumPy?

Есть что-то вроде Matlab'sprocrustes функция в NumPy / SciPy или связанных библиотеках?

Для справки. Анализ прокруток направлен на выравнивание 2 наборов точек (другими словами, 2 фигур), чтобы минимизировать квадратное расстояние между ними, удаляя компоненты масштаба, сдвига и поворота.

Пример в Matlab:

X = [0 1; 2 3; 4 5; 6 7; 8 9];   % first shape
R = [1 2; 2 1];                  % rotation matrix
t = [3 5];                       % translation vector
Y = X * R + repmat(t, 5, 1);     % warped shape, no scale and no distortion
[d Z] = procrustes(X, Y);        % Z is Y aligned back to X
Z

Z =

  0.0000    1.0000
  2.0000    3.0000
  4.0000    5.0000
  6.0000    7.0000
  8.0000    9.0000

Та же задача в NumPy:

X = arange(10).reshape((5, 2))
R = array([[1, 2], [2, 1]])
t = array([3, 5])
Y = dot(X, R) + t
Z = ???

Примечание: яm интересует только выровненная форма, так как квадратная ошибка (переменнаяd в коде Matlab) легко вычисляется из 2 форм.

Ответы на вопрос(2)

Ваш ответ на вопрос