Main Content


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 =

That A and B are orthogonal is shown by the fact that theta is equal to π/2.

theta - pi/2
ans =


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.

Extended Capabilities

Version History

Introduced before R2006a