procrustes

Анализ Простростеса

Синтаксис

d = procrustes(X,Y)
[d,Z] = procrustes(X,Y)
[d,Z,transform] = procrustes(X,Y)
[...] = procrustes(...,'scaling',flag)
[...] = procrustes(...,'reflection',flag)

Описание

d = procrustes(X,Y) определяет линейное преобразование (перемещение, отражение, ортогональное вращение и масштабирование) точек в матрице Y чтобы наилучшим образом соответствовать их точкам в матрице X. Критерий качества подгонки является суммой квадратичных невязок. procrustes возвращает минимизированное значение этой меры неоднородности в d. d стандартизируется мерой шкалы X, заданные:

sum(sum((X-repmat(mean(X,1),size(X,1),1)).^2,1))

То есть сумма квадратов элементов массива центрированной версии X. Однако, если X содержит повторения одной и той же точки, сумма квадратичных невязок не стандартизирована.

X и Y должны иметь одинаковые числа точек (строки) и procrustes соответствует Y(i) на X(i). Точки в Y может иметь меньшую размерность (количество столбцов), чем размерность в X. В этом случае procrustes добавляет столбцы нулей в Y при необходимости.

[d,Z] = procrustes(X,Y) также возвращает преобразованную Y значения.

[d,Z,transform] = procrustes(X,Y) также возвращает преобразование, которое преобразуется Y на Z. transform - массив структур с полями:

  • c - Компонент перевода

  • T - Ортогональный компонент вращения и отражения

  • b - Компонент шкалы

То есть:

c = transform.c;
T = transform.T;
b = transform.b;

Z = b*Y*T + c;

[...] = procrustes(...,'scaling',flag), когда flag является false, позволяет вам вычислить преобразование без компонента шкалы (то есть с b равно 1). Значение по умолчанию flag является true.

[...] = procrustes(...,'reflection',flag), когда flag является false, позволяет вам вычислить преобразование без компонента отражения (то есть с det(T) равно 1). Значение по умолчанию flag является 'best', который вычисляет наиболее подходящее преобразование, включает ли оно компонент отражения или нет. A flag от true заставляет вычислять преобразование компонентом отражения (то есть с det(T) равно -1)

Примеры

свернуть все

Сгенерируйте выборочные данные в две размерностей.

rng('default')
n = 10;  
X = normrnd(0,1,[n 2]);

Вращайте, масштабируйте, перемещайте и добавляйте шум к точкам выборки.

S = [0.5 -sqrt(3)/2; sqrt(3)/2 0.5];
Y = normrnd(0.5*X*S+2,0.05,n,2);

Соответствие Y на X использование анализа procrustes.

[d,Z,tr] = procrustes(X,Y);

Постройте график исходной X и Y с преобразованным Y .

plot(X(:,1),X(:,2),'rx',Y(:,1),Y(:,2),'b.',Z(:,1),Z(:,2),'bx');

Figure contains an axes. The axes contains 3 objects of type line.

Ссылки

[1] Kendall, David G. «A Survey of the Statistical Theory of Shape». Статистическая наука. Том 4, № 2, 1989, с. 87-99.

[2] Bookstein, Fred L. Morphometric Tools for Landmark Data. Кембридж, Великобритания: Cambridge University Press, 1991.

[3] Себер, Г. А. Ф. Многомерные наблюдения. Hoboken, NJ: John Wiley & Sons, Inc., 1984.

См. также

|

Представлено до R2006a