定期到增量(数据缩减)

Periodic to incremental (data reduction)

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

  1. 计算 Angslope=diff(Angle),提取索引 j1=find(Angslope>0.2 & Angslope<0.2) 以避免由于 angular 信号反转导致的负斜率,然后尝试应用那些原始 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
    

效果很好,但我不知道如何 "match up" 我获得的单步增量!

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

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

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

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

你的总angular位移:

Tot = sum(Inc);

最佳,