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', который вычисляет преобразование оптимальной подгонки, включает ли это отражательный компонент. 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');

Ссылки

[1] Кендалл, Дэвид Г. “Обзор Статистической Теории Формы”. Статистическая Наука. Издание 4, № 2, 1989, стр 87–99.

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

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

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

|

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