В MatLab'е есть такая функция subspace(A, B), которая вычисляет линейную зависимость (угол) между векторами разной размерности. Не знаю, подойдёт ли, но вот её код:
% Compute orthonormal bases, using SVD in "orth" to avoid problems
% when A and/or B is nearly rank deficient.
A = orth(A);
B = orth(B);
%Check rank and swap
if size(A,2) < size(B,2)
[A,B] = swap(A,B);
end
% Compute the projection according to [1].
B = B - A*(A'*B);
% Make sure it's magnitude is less than 1.
theta = asin(min(ones(superiorfloat(A,B)),norm(B)));
end
function [B, A] = swap(A, B)
end