n个向量之间的角度 - Matlab

时间:2018-03-07 08:42:21

标签: matlab matrix

考虑一组点(仅作为示例)

x = [0 1 2 5 4 8 5 6];
y = [5 8 4 2 5 6 4 5];

和另一个参考点:

xc=1;
yc=1;

我用它来表示这些点作为向量:

vec=[x-xc y-yc];

我希望获得一个矩阵,其中包含通过计算得到的所有向量之间的所有角度(对于单个向量)

angle = acosd(dot(v,u)/norm(u)*norm(v));

如何在几行中获得此计算而不在循环中按矢量向量?在我的计算中,积分的数量非常大。

1 个答案:

答案 0 :(得分:6)

我认为你的意思是vec = [x-xc; y-yc];。要在所有行之间使用dotproduct,您可以使用

vec.'*vec

每个载体的范数(欧几里得)可以确定为

no = sqrt(sum(vec.*vec,1))

不同规范的乘积可以与vec

的计算方法相同
no.'*no

因此可以找到角度

no = sqrt(sum(vec.*vec,1));
angles = acosd(vec.'*vec./(no.'*no));