有一段时间我正在考虑解决这个问题。我有一个角度数据的注册(角度(~20000,1))在0到355之间变化(一个电位器连接到旋转测试机器),我想以增量形式转换它,因为我想要最终的总角度移位。主要问题是355和下一个0之间没有跳跃而是快速减少(时间与角度空间的负斜率)。到目前为止,我已尝试了两种方法:
计算Angslope=diff(Angle)
,提取并查找索引j1=find(Angslope>0.2 & Angslope<0.2)
以避免因角度信号反转而出现负斜率,然后尝试将这些索引应用于原始Angle(n,1)
},Angle2=Angle(j1)
。问题是Angslope的n-1长度以及不知何故我的索引没有简单地移动到一个位置。
对于周期和逻辑,如果前一个数据是&lt;当前值等
Angle2=zeros(size(Angle,1),1);
for i=2:size(Angle,1)
if Angle(i,1)<Angle(i-1,1)
Angle2(i,1)=NaN;
else Angle2(i,1)=Angle(i,1);
end
end
哪种方法有效,但我不知道如何“匹配”我获得的单个增量步骤!
任何帮助或简单的评论都会有很大的帮助!!
答案 0 :(得分:1)
您可能正在寻找unwrap
功能。为此,你必须将角度转换为弧度,但这不是什么大问题。
您可以在一行中获得增量:
Inc = diff(unwrap(Angle*pi/180))*180/pi;
和你的总角度位移:
Tot = sum(Inc);
最佳,