У меня есть два графика рассеяния (в виде списков) в 3D-сетке. Я хочу сопоставить полиномиальную кривую или форму одного точечного графика с другим, ie изменить «форму» точек первого графика, чтобы лучше соответствовать второму графику. Каков будет эффективный способ go об этом, предпочтительно тот, который имеет регулируемый уровень точности?
Я начал реализовывать несколько вариантов (выпуклый корпус, k-means), но мне трудно найти время закодированные алгоритмы. Использование кривой соответствия - это, вероятно, моя лучшая ставка, но, опять же, я не могу найти ничего при проецировании одной кривой на другую. Мой язык программирования Python.
Вот пример кода, чтобы понять:
import scipy.optimize as optimize
import numpy as np
A = np.array([(19,20,24), (10,40,28), (10,50,31)])
B = np.array([(12,15,23), (12,50,23), (11,55,13)])
def 3Dpoly(data, a, b):
# return 3D polynomial function
Aparams, Apcov = optimize.curve_fit(3Dpoly, A[:,:2], A[:,2])
Bparams, Bpcov = optimize.curve_fit(3Dpoly, B[:,:2], B[:,2])
# how to get equation mapping one curve to another?