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 возвращает минимизированное значение этой меры по несходству в dD стандартизирован мерой шкалы 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', который вычисляет преобразование оптимальной подгонки, включает ли оно отражательный компонент. 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] Кендалл, Дэвид Г. “Обзор Статистической Теории Формы”. Статистическая Наука. Издание 4, № 2, 1989, стр 87–99.

[2] Боокштайн, Фред Л. Морфометрические инструменты для знаменательных данных. Кембридж, Великобритания: Издательство Кембриджского университета, 1991.

[3] Seber, G. A. F. Многомерные наблюдения. Хобокен, NJ: John Wiley & Sons, Inc., 1984.

Смотрите также

|

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