Matlab - 如何对两个矩阵之间的每一行执行操作?
Matlab - How to perform operations on each row between two matrices?
我有两个矩阵,每个矩阵包含两个向量(每行是一个向量):
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]
如何让它计算每行向量之间的角度?
我有两个矩阵,每个矩阵包含两个向量(每行是一个向量):
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]
如何让它计算每行向量之间的角度?