Есть ли что-то вроде функции Matlab procrustes
в NumPy/SciPy или связанных с ней библиотеках?Анализ прокрустов с помощью NumPy?
Для справки. Анализ Procrustes направлен на выравнивание двух наборов точек (другими словами, 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 = ???
Примечание: Я заинтересован только в соосных форме, так как ошибки (переменная d
в Matlab коде) легко вычисленный из двух форм.
Это старый вопрос, но для тех, кто ищет тот же год спустя, в настоящее время метод в Sci Py: http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.procrustes.html#scipy.spatial.procrustes –