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.