Numpy 如何通过在测量之间插值来提高1d数据分辨率?

Numpy 如何通过在测量之间插值来提高1d数据分辨率?,numpy,interpolation,resolution,sensors,python-3.7,Numpy,Interpolation,Resolution,Sensors,Python 3.7,我正在开发一个pythong脚本,在这里我从一个连接了低分辨率编码器的马达接收角度测量。我从马达上得到的数据分辨率很低,在测量之间大约有5度的间隔。这是传感器以恒定速度旋转时的输出示例,单位为度: 传感器输出=[5,5,5,10,10,10,10,10,15,20,20,20,25,25,30,30,30,30,35….] 正如你所看到的,这些测量中的一些是重复的。 根据这些测量值,我想进行插值,以获得1D数据点之间的测量值。例如,如果我在时间k接收到角度测量θ=5,在下一个例子t=k+1也接收

我正在开发一个pythong脚本,在这里我从一个连接了低分辨率编码器的马达接收角度测量。我从马达上得到的数据分辨率很低,在测量之间大约有5度的间隔。这是传感器以恒定速度旋转时的输出示例,单位为度:

传感器输出=[5,5,5,10,10,10,10,10,15,20,20,20,25,25,30,30,30,30,35….]

正如你所看到的,这些测量中的一些是重复的。 根据这些测量值,我想进行插值,以获得1D数据点之间的测量值。例如,如果我在时间k接收到角度测量θ=5,在下一个例子t=k+1也接收到θ=5的测量,我想计算一个类似θ=5+1/5的估计值。 我也一直在考虑使用某种预测滤波,但我不确定哪种方法适用于这种情况,例如卡尔曼滤波。由于电机以恒定角速度旋转,因此估计输出应为线性形式

我曾尝试使用numpy.linspace来实现我想要的,但似乎无法让它以我想要的方式工作:

# Interpolate for every 'theta_div' values in angle received through 
# modbus
for k in range(np.size(rx)):
    y = T.readSensorData() # take measurement (call read sensor function)
    fp = np.linspace(y, y+1, num=theta_div)
    for n in range(theta_div):
        if k % 6 == 0:
            if not y == fp[n]:
                z = fp[n]
            else:
                z = y
        print(z)
因此,对于传感器读数:[5,5,5,5,10,10,10,10,15,20,20,20,25,25,30,30,30,30,30,35,35…]每个元件在时间=k0…kn

我希望输出类似于: θ=[5,6,7,8,9,10,11,12,13,14,15,17.5,20…]


因此,简而言之,我需要某种预测,然后用传感器的实际读数更新值,类似于卡尔曼滤波器中的过程。

为什么不进行线性拟合

将numpy作为np导入 将matplotlib.pyplot作为plt导入 测量=np.数组[5,5,5,5,10,10,10,10,15,20,20,20,25,30,30,30,30,30,30,35] 时间数组=np.arangemessurements.shape[0] fitparms=np.polyfittime_数组,测量值,1 def管路X、a、b: 返回a*x+b 更好的\u时间\u数组=np.linspace0,np.maxtime\u数组 plt.绘图时间数组、测量 plt.plotbetter\u time\u数组、linebetter\u time\u数组、fitparms[0],fitparms[1]
谢谢你的回复!然而,我决定尝试实现一个卡尔曼滤波器,以估计测量之间的数据点,它工作得非常好。