У меня есть две матрицы, каждая из которых содержит два вектора (каждая строка является вектором):
u = [1 0 0; 2 0 0]
v = [1 1 0; 2 2 0]
Я хочу вычислить два угла между векторами соответствующих строк в матрицах (угол между [1 0 0] , [1 1 0]
и угол между [2 0 0] , [2 2 0]
). В этом примере оба угла будут 45 градусов. Итак, мне нужна новая матрица, подобная этой:
angles = [45; 45]
Когда я попробую это:
u = [1 0 0; 2 0 0]
v = [1 1 0; 2 2 0]
dp = u(:,1) .* v(:,1) + u(:,2) .* v(:,2) + u(:,3) .* v(:,3);
angles = atan2d(norm(cross(u,v)),dp)
Ответ будет:
angles = [76.3670 ; 45.8683]
и когдаЯ пытаюсь это (изменить norm
на normr
):
u = [1 0 0; 2 0 0]
v = [1 1 0; 2 2 0]
dp = u(:,1) .* v(:,1) + u(:,2) .* v(:,2) + u(:,3) .* v(:,3);
angles = atan2d(norm(crossr(u,v)),dp)
Ответ будет:
angles = [0 0 45.0000 ; 0 0 14.0362]
Как я могу рассчитать угол между векторами каждогострока