Итак, я хочу прочитать в нескольких наборах данных и сравнить их с одним набором данных, чтобы выполнить исследование разрешения сетки. У меня есть базовый скрипт, настроенный для чтения в моих данных из файла дампа из моего кода CFD. Он интерполирует между моим набором данных и прекрасно работает, но он только отображает сплайн между моими данными.Интерполяция и сравнение python
f = open('x_data.dat','r')
xd=np.genfromtxt(f)
f.close()
f = open('y_data.dat','r')
yd=np.genfromtxt(f)
f.close()
plt.plot(xd,yd,'o')
t = np.arange(xd.shape[0], dtype=float)
t /= t[-1]
nt = np.linspace(0, 1, 100)
x1 = scipy.interpolate.spline(t, xd, nt)
y1 = scipy.interpolate.spline(t, yd, nt)
plt.plot(x1, y1, label='range_spline')
plt.show()
Я хочу сохранить, что данные сплайн и использовать его в качестве Р (х, у), чтобы подключить другие х, у данных в и проверить расположение поверхности к тому, что мой «точное решение» должно быть. Данные из моих других наборов данных не совпадают с точными данными решения, следовательно, необходимо интерполировать. Есть ли способ хранения данных сплайнов между каждой точкой, поэтому я могу получить f (x, y), который я могу использовать как функцию? Кроме того, эти сплайны кубические. Не выглядят кубиками, и я не мог найти простой ответ.
Вместо этого вы можете использовать scipy.interpolate.interp1d? Это вернет функцию, которую можно повторно использовать (и вы можете указать кубическую интерполяцию). Обратите внимание, что по умолчанию ошибка возникает, если вы передаете значение вне диапазона, поэтому оно не будет экстраполироваться вообще. – Gretchen
Мои данные не монотонны, они закрыты и клиновидны. Поэтому я не думаю, что могу использовать эту конкретную интерполяцию. Мне не нужно интерполировать, мне нужна кривая для измерения нормального расстояния до точек вокруг нее. – crockski
* Мне не нужно экстраполировать – crockski