我有两条线的终点,我需要找到这两条线之间的角度。
同样地,我在Excel表格中有60个这样的点,我需要找到连接这60个点的线之间的角度。我需要找到这些线段之间的角度。
我想在MATLAB中这样做:
D = xlsread('45_A.xls');
CosTheta = dot(D(i,:),D(i+1,:))/(norm(D(i,:))*norm(D(i+1,:)));
xlswrite('45_Aav',CosTheta);
我编写的这个程序在excel表中重复了60个值,即我把它放在一个循环中。但是正在计算一些错误的值,即虚数和实数值中的角度值写在excel表中。我认为计算部分存在一些问题。你能帮忙吗?
答案 0 :(得分:0)
两个向量u和v之间的角度度可以计算为
180/pi*acos(dot(u,v)/(norm(u)*norm(v)))
我在以下随机生成的60个向量集上测试了这个,遵循以下公式:
D = (10*rand(60,3)-5); % random matrix 60 by 3
for i=1:size(D,1)-1
angleInDegrees = 180/pi*acos(dot(D(i,:),D(i+1,:))/(norm(D(i,:))*norm(D(i+1,:))));
disp(angleInDegrees);
end
没有获得虚数值。
以上假设D中包含的向量是您想要找到角度的向量。如果您拥有的数组包含点P,并且您想要在连接这些点的线之间找到角度,则首先需要减去相邻点的坐标。像这样:
points = (10*rand(60,3)-5); % random matrix 60 by 3
D = diff(points,1); % differences between consecutive rows
其余如上所述。