如何解决几何 X-Y 数据的 Pandas 线性插值似乎忽略了点
我正在尝试对 Pandas 中的数据帧进行上采样(从 50 Hz 到 2500 Hz)。我必须上采样以匹配以更高频率采样的传感器。我有来自铣床的 x、y、z 点。 当我绘制原始数据时,线条看起来很直,正如我所料。
我像这样插入数据框:
df.drop_duplicates(subset='time',inplace=True)
df.set_index('time',inplace=True)
df.index = pd.DatetimeIndex(df.index)
upsampled = new_df.resample('0.4ms').interpolate(method='linear')
plt.scatter(upsampled['X[mm]'],upsampled['Y[mm]'],s=0.5)
plt.plot()
我也试过
upsampled = df.resample('0.4L').interpolate(method='linear')
我希望新点总是介于原始点之间。由于我从 50 Hz 到 2500 Hz,我希望原始数据中的每对点之间有 50 个均匀间隔的点。不过好像有些原点被忽略了,如下图所示(第二张图放大了一个特别麻烦的地方)。
此图显示了橙色的原始点和蓝色的上采样插值点(两者都是分散的,尽管上采样点非常密集,看起来像一个图)。代码如下所示。
upsampled = df.resample('0.4ms').interpolate(method='linear')
plt.scatter(upsampled['X[mm]'],s=0.5,c='blue')
plt.scatter(df['X[mm]'],df['Y[mm]'],c='orange')
plt.gca().set_aspect('equal',adjustable='box')
fig.show()
有什么想法可以使插值工作吗?
解决方法
最有可能的问题是原始和重采样 DataFrame 中的时间戳没有对齐,因此在重采样时我们需要指定如何处理。
由于原始频率为 50 Hz,重新采样频率为 2500 Hz,只需取 mean
即可解决:
upsampled = new_df.resample('0.4ms').mean().interpolate(method='linear')
不幸的是,没有任何样本数据,我无法验证它是否有效。如果有帮助,请告诉我
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。