Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Procrustes analysis

`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)`

determines
a linear transformation (translation, reflection, orthogonal rotation,
and scaling) of the points in matrix `Y`

to best
conform them to the points in matrix `X`

. The goodness-of-fit
criterion is the sum of squared errors. `procrustes`

returns
the minimized value of this dissimilarity measure in `d`

. `d`

is
standardized by a measure of the scale of `X`

, given
by:

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

That is, the sum of squared elements of a centered version of `X`

.
However, if `X`

comprises repetitions of the same
point, the sum of squared errors is not standardized.

`X`

and `Y`

must have the
same number of points (rows), and `procrustes`

matches `Y(i)`

to `X(i)`

.
Points in `Y`

can have smaller dimension (number
of columns) than those in `X`

. In this case, `procrustes`

adds
columns of zeros to `Y`

as necessary.

`[d,Z] = procrustes(X,Y)`

also
returns the transformed `Y`

values.

`[d,Z,transform] = procrustes(X,Y)`

also
returns the transformation that maps `Y`

to `Z`

. `transform`

is
a structure array with fields:

`c`

— Translation component`T`

— Orthogonal rotation and reflection component`b`

— Scale component

That is:

c = transform.c; T = transform.T; b = transform.b; Z = b*Y*T + c;

`[...] = procrustes(...,'scaling',`

,
when * flag*)

`flag`

`false`

,
allows you to compute the transformation without a scale component
(that is, with `b`

equal to `1`

).
The default `flag`

`true`

.`[...] = procrustes(...,'reflection',`

,
when * flag*)

`flag`

`false`

,
allows you to compute the transformation without a reflection component
(that is, with `det(T)`

equal to `1`

).
The default `flag`

`'best'`

,
which computes the best-fitting transformation, whether or not it
includes a reflection component. A `flag`

`true`

forces
the transformation to be computed with a reflection component (that
is, with `det(T)`

equal to `-1`

)[1] Kendall, David G. “A Survey of
the Statistical Theory of Shape.” *Statistical Science*.
Vol. 4, No. 2, 1989, pp. 87–99.

[2] Bookstein, Fred L. *Morphometric
Tools for Landmark Data*. Cambridge, UK: Cambridge University
Press, 1991.

[3] Seber, G. A. F. *Multivariate
Observations*. Hoboken, NJ: John Wiley & Sons, Inc.,
1984.