我有一个在 x 方向上采样率不均匀的 (x, y) 信号(采样率大致与 1/x 成比例)。我尝试使用 scipy.signal 的 resample 函数对其进行均匀重采样。根据文档,我可以传递以下参数:scipy.resample(array_of_y_values, number_of_sample_points, array_of_x_values),它将返回[[resampled_y_values],[new_sample_points]]格式的数组。我期望它能返回一个采样率均匀且形式与原始数据大致相同的数据,具有相同的最小和最大 x 值。但实际效果并非如此。
# nu_data = [[x1, x2, ..., xn], [y1, y2, ..., yn]]
# with x values in ascending order
length = len(nu_data[0])
resampled = sg.resample(nu_data[1], length, nu_data[0])
uniform_data = np.array([resampled[1], resampled[0]])
plt.plot(nu_data[0], nu_data[1], uniform_data[0], uniform_data[1])
plt.show()
图像看起来并不是原始的,x轴范围也已被调整。如果我尝试修复范围:自己构建所需的均匀x值并使用它们代替,畸变仍然存在:
length = len(nu_data[0])
resampled = sg.resample(nu_data[1], length, nu_data[0])
delta = (nu_data[0,-1] - nu_data[0,0]) / length
new_samplepoints = np.arange(nu_data[0,0], nu_data[0,-1], delta)
uniform_data = np.array([new_samplepoints, resampled[0]])
plt.plot(nu_data[0], nu_data[1], uniform_data[0], uniform_data[1])
plt.show()
如果不用这种方法,如何正确地对我的数据进行均匀重采样?
resample
不是应该处理非均匀采样数据并将其重新采样为均匀数据吗?... - Neinstein