MATLAB 计算离散点间的夹角

最近的项目中想要在一组离散数组中找到在一条直线上的点,于是想到每三个点计算一下夹角,如果在一条直线上,那么夹角应该在180°左右。

代码实现如下:

%%数据x,y,z为存放用户数据的mx1的数组
%% 每三个点求夹角
for I=1:m-2
a2 = (y(I)-y(I+1))*(y(I)-y(I+1))+(z(I)-z(I+1))*(z(I)-z(I+1));
b2 = (y(I+2)-y(I+1))*(y(I+2)-y(I+1))+(z(I+2)-z(I+1))*(z(I+2)-z(I+1));
c2 = (y(I)-y(I+2))*(y(I)-y(I+2))+(z(I)-z(I+2))*(z(I)-z(I+2));
a = sqrt(a2);
b = sqrt(b2);
c = sqrt(c2);
pos(I) = (a2+b2-c2)/(2*a*b);                                               %求出余弦值
angle(I)  = acos(pos(I));                                                  %余弦值装换为弧度值
realangle(I)  = angle(I)*180/pi;                                           %弧度值转换为角度值
disp(realangle(I));
end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值