Python 将锯齿转换为连续线性函数

Python 将锯齿转换为连续线性函数,python,signal-processing,Python,Signal Processing,角度编码器的数据呈锯齿状,范围为0°至360°。现在我想创建一个连续的线性函数来描述总角度 我想从一个可以这样创建的锯齿函数开始(在带有numpy的python中): 回到线性(在本例中为恒等式)函数: x = np.arange(0,1000,2) y = np.arange(0,1000,2) 我试图使用的数据不是生成的,而是来自角度编码器的测量数据。我不知道频率。我知道函数值在区间[0360]内。我正在寻找一种也能处理“负”锯齿的解决方案。看起来你只需要将有效值分成两部分,我们称之为

角度编码器的数据呈锯齿状,范围为0°至360°。现在我想创建一个连续的线性函数来描述总角度

我想从一个可以这样创建的锯齿函数开始(在带有numpy的python中):

回到线性(在本例中为恒等式)函数:

x = np.arange(0,1000,2)
y = np.arange(0,1000,2)


我试图使用的数据不是生成的,而是来自角度编码器的测量数据。我不知道频率。我知道函数值在区间[0360]内。我正在寻找一种也能处理“负”锯齿的解决方案。

看起来你只需要将有效值分成两部分,我们称之为
base
rementer
。总价值将是
base+提醒

然后,分析输入的变化,如果输入高(359或接近),突然变低(0或接近),则将360添加到
base
。若改变发生在另一个方向,那个么你们将从基数中减去360。重新计算
base
后,将输入值分配给
提醒
,以备将来参考。就这些。

嗨,我遇到了你同样的问题,我解决了它:

我的信号是这样的:

它是一个数组,包含[-pi,pi]范围内旋转复数的角度。 我想要的是你描述的连续线性函数

我只是想比较包含角度值的数组中的两个连续元素,当它们之间的差是pi的倍数时,下一个值就会增加这个差

n=0
for i in range(len(Angle)-1):
     if round((Angle[i] - Angle[i+1])/pi) == n+2:
         n=n+2
     Angle[i+1]=Angle[i+1] + pi*n 
这就是我得到的:


谢谢你的指点,非常感谢。我想在这种情况下,我需要知道锯齿是在下降还是在上升。您可以通过保存以前的输入值来结束此操作。如果收到的值是相当连续的,那么应该很简单(正如我在回答中解释的)。在其他情况下,您可能需要使用一些更复杂的技术。
n=0
for i in range(len(Angle)-1):
     if round((Angle[i] - Angle[i+1])/pi) == n+2:
         n=n+2
     Angle[i+1]=Angle[i+1] + pi*n