Angle between two subspaces

`theta = subspace(A,B)`

`theta = subspace(A,B)`

finds
the angle between two subspaces specified by the columns of `A`

and `B`

.
If `A`

and `B`

are column vectors
of unit length, this is the same as `acos(abs(A'*B))`

.

Consider two subspaces of a Hadamard matrix, whose columns are orthogonal.

H = hadamard(8); A = H(:,2:4); B = H(:,5:8);

Note that matrices `A`

and `B`

are
different sizes — `A`

has three columns and `B`

four.
It is not necessary that two subspaces be the same size in order to
find the angle between them. Geometrically, this is the angle between
two hyperplanes embedded in a higher dimensional space.

theta = subspace(A,B) theta = 1.5708

That `A`

and `B`

are orthogonal
is shown by the fact that `theta`

is equal to *π*/2.

theta - pi/2 ans = 0

If the angle between the two subspaces is small, the two spaces
are nearly linearly dependent. In a physical experiment described
by some observations `A`

, and a second realization
of the experiment described by `B`

, `subspace(A,B)`

gives
a measure of the amount of new information afforded by the second
experiment not associated with statistical errors of fluctuations.