MATLAB: Angle Between two vectors.

function

How could I create a function that will take two vectors as inputs, and outputs the angle between them in radians.

Best Answer

Given two vectors A and B, the dot product of the two vectors (A dot B) gives the product ABcos(ang), so to get just the angle, you want to take the dot product of two unit vectors;
Assume A = [ax, ay, az], B = [bx, by, bz]
magA = sqrt(ax^2+ay^2+az^2); % = sqrt(A(1)^2 + A(2)^2 + A(3)^2)
magB = sqrt(bx^2+by^2+bz^2); % = sqrt(B(1)^2 + B(2)^2 + B(3)^2)
UA = [ax/magA, ay/magA, az/magA]; % A unit vector, = [A(1)/magA, A(2)/magA, A(3)/magA]
UB = [bx/magB, by/magB, bz/magB]; % B unit vector, = [B(1)/magB, B(2)/magB, B(3)/magB]
cosAng = dot(UA,UB); % = UA(1)*UB(1) + UA(2)*UB(2) + UA(3)*UB(3)
ang = acos(cosang); % This is the angle between vector A and Vector B, in radians
As a function;
function ang = Vangle(A,B)
magA = sqrt(A(1)^2 + A(2)^2 + A(3)^2);
magB = sqrt(B(1)^2 + B(2)^2 + B(3)^2);
UA = [A(1)/magA, A(2)/magA, A(3)/magA]
UB = [B(1)/magB, B(2)/magB, B(3)/magB]
cosAng = UA(1)*UB(1) + UA(2)*UB(2) + UA(3)*UB(3);
ang = acos(cosang);
return
end
Related Question