Каков наиболее эффективный способ нанести на карту или спроецировать график рассеяния на другой график? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть два графика рассеяния (в виде списков) в 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?
...