0

有一段时间我在考虑解决这个问题。我有一个在 0 到 355 之间变化的角度数据 (Angle(~20000,1)) 的注册(连接到旋转测试机的电位计),我想将其转换为增量形式,因为我想要最终的总角度移位。主要问题是在 355 和下一个 0 之间没有跳跃,而是快速递减(时间与角度空间的斜率很大)。到目前为止,我已经尝试了两种方法:

  1. 计算Angslope=diff(Angle), 提取并找到索引j1=find(Angslope>0.2 & Angslope<0.2)以避免由于角度信号的反转而导致的负斜率,然后尝试将这些索引应用于原始Angle(n,1),如Angle2=Angle(j1)。问题在于 Angslope 的 n-1 长度,以及不知何故,我的一个位置的索引并没有简单的移动。

  2. 对于循环和逻辑,如果前一个小于当前值等,则希望排除数据

    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
    

哪个效果很好,但我不知道如何“匹配”我获得的单个增量步骤!

任何帮助或简单的评论都会有很大的帮助!!

4

1 回答 1

1

您可能正在寻找该unwrap功能。为此,您必须将角度转换为弧度,但这没什么大不了的。

您可以在一行中获得增量:

Inc = diff(unwrap(Angle*pi/180))*180/pi;

和你的总角位移:

Tot = sum(Inc);

最好的,

于 2015-02-15T12:02:16.337 回答