There are many options:
a1 = atan2(norm(cross(v1,v2)), dot(v1,v2)) a2 = acos(dot(v1, v2) / (norm(v1) * norm(v2))) a3 = acos(dot(v1 / norm(v1), v2 / norm(v2))) a4 = subspace(v1,v2)
All formulas from this mathworks stream . They say that a3 is the most stable, but I do not know why.
For several vectors stored in the columns of the matrix, you can calculate the angles using this code:
% Calculate the angle between V (d,N) and v1 (d,1) % d = dimensions. N = number of vectors % atan2(norm(cross(V,v2)), dot(V,v2)) c = bsxfun(@cross,V,v2); d = sum(bsxfun(@times,V,v2),1);%dot angles = atan2(sqrt(sum(c.^2,1)),d)*180/pi;
source share