Интерполяция кривой: в каком порядке рассматриваются координаты? - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь понять, как работает интерполяция и что приводит к зигзагообразному повороту при интерполяции в моей кривой. Прав ли я, предполагая, что интерполяция учитывает точки в заданном порядке или, как я думаю, может быть, происходит что-то более сложное?

Мой вывод из рассеянной кривой

from scipy import interpolate
yao = np.asarray(yo[0::10])
xao = np.asarray(xo[0::10])
#plt.plot(xao, yao)
print(len(xao))
okayo = np.where(np.abs(np.diff(xao)) + np.abs(np.diff(yao)) > 0)
xpo = np.r_[xao[okayo], xao[-1]]
print(len(xpo))
ypo = np.r_[yao[okayo], yao[-1]]

tcko, uo = interpolate.splprep([xpo, ypo], s=3, k=1, per=False)
xo, yo = interpolate.splev(np.linspace(0, 1, 100), tcko)

fig = plt.figure()
ax = plt.subplot(111)
ax.plot(xao, yao, '.', markersize=2)
ax.plot(xo, yo, alpha=0.5)

Bad interpolation

В отличие от ввода меньшего количества точек в известном порядке

Good interpolation

Я думал, что понимаю интерполяцию, но этот зигзаг меня сильно смущает. Спасибо за любую помощь в понимании.

1 Ответ

1 голос
/ 21 мая 2019

Ваши данные недоступны, поэтому воспроизвести результаты невозможно, но графики выглядят разумно.Скорее всего, используемая вами функция рассматривает ваш ввод как данные временного ряда, например, при интерполяции верхнего графика правильно, если вы ожидаете, что значения сигнала отскочат от 500 до 1000, когда вы определяете порядок на нижнем графике, вы в основном вводите другой сигналгде значения изменяются плавно, а интерполированные значения - так.

...