在特定索引处插入数据
interpolate data at specific index
我正在使用旋转编码器传感器 仅在旋转时返回数据。因此,当我开始测量时,它会给我一列这样的时间间隔(示例):
0
1个
2个
20
21
22
这意味着传感器在前两秒旋转,但在前两秒后它直到 20 秒才移动。我想以 1 的步长用 3 到 19 填补 2 和 20 之间的差距。但我还需要在这些特定索引的 mijn 距离数据中像这样填补它。有人知道怎么做吗?
我的理解是你的数据形式为
times = [0, 1, 2, 20, 21, 22]
rotations = [2.9, 3.1, 3.4, 2.5, 1, 0.7]
并想要以下输出:
times_interpolated = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
rotations_interpolated = [2.9, 3.1, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 2.5, 1, 0.7]
下面的解决方案不是很优雅,但应该很容易理解。请注意,这仅在时间为整数时才能可靠地工作。
times_interpolated, rotations_interpolated = [], []
i = 0
for t in range(times[0], times[-1] + 1):
if t == times[i + 1]:
i += 1
times_interpolated.append(t)
rotations_interpolated.append(rotations[i])
希望对您有所帮助。
我正在使用旋转编码器传感器 仅在旋转时返回数据。因此,当我开始测量时,它会给我一列这样的时间间隔(示例):
0 1个 2个 20 21 22
这意味着传感器在前两秒旋转,但在前两秒后它直到 20 秒才移动。我想以 1 的步长用 3 到 19 填补 2 和 20 之间的差距。但我还需要在这些特定索引的 mijn 距离数据中像这样填补它。有人知道怎么做吗?
我的理解是你的数据形式为
times = [0, 1, 2, 20, 21, 22]
rotations = [2.9, 3.1, 3.4, 2.5, 1, 0.7]
并想要以下输出:
times_interpolated = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]
rotations_interpolated = [2.9, 3.1, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 2.5, 1, 0.7]
下面的解决方案不是很优雅,但应该很容易理解。请注意,这仅在时间为整数时才能可靠地工作。
times_interpolated, rotations_interpolated = [], []
i = 0
for t in range(times[0], times[-1] + 1):
if t == times[i + 1]:
i += 1
times_interpolated.append(t)
rotations_interpolated.append(rotations[i])
希望对您有所帮助。