定期增量(数据减少)

时间:2015-02-15 10:21:04

标签: matlab increment reduction periodic-processing

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

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

  2. 对于周期和逻辑,如果前一个数据是&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
    
  3. 哪种方法有效,但我不知道如何“匹配”我获得的单个增量步骤!

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

1 个答案:

答案 0 :(得分:1)

您可能正在寻找unwrap功能。为此,你必须将角度转换为弧度,但这不是什么大问题。

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

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

和你的总角度位移:

Tot = sum(Inc);

最佳,