Подгонка трехмерных точек дуги к окружности (регрессия в Python)

Я относительно новичок в питоне. Моя проблема заключается в следующем

У меня есть набор зашумленных точек данных (x, y, z) на произвольной плоскости, которая образует двумерную дугу. Я хотел бы лучше всего подобрать круг через эти точки и вернуться: центр (x, y, z), радиус и остаток.

Как мне решить эту проблему, используя scipy в python. Я мог бы решить это, используя итеративный метод и написав для него весь код. Однако есть ли способ лучше всего подогнать круг, используя наименьший квадрат в питоне? а затем найти центр и радиус?

Спасибо, Овайс.


person user992379    schedule 12.10.2011    source источник
comment
Известна ли произвольная плоскость заранее или ее тоже нужно определить? В последнем случае вам потребуется указать некоторые дополнительные параметры для определения плоскости, даже если вы сообщаете только центр, радиус и невязки.   -  person Jim Lewis    schedule 13.10.2011
comment
@JimLewis Произвольная плоскость известна заранее. Я спроецировал свои 3D-точки данных на эту наиболее подходящую плоскость. Тем не менее, теперь я хотел бы, чтобы наиболее подходящая окружность соответствовала этим точкам проекта на этой наиболее подходящей плоскости.   -  person user992379    schedule 13.10.2011
comment
Если вы заранее знаете плоскость (как в вашем ответе на вопрос Джима Льюиса), то 3 точки на плоскости однозначно описывают круг — не нужно возиться с каким-либо алгоритмом наименьших квадратов (см. ОБВЕДИТЕ ТРИ ТОЧКИ для схемы геометрического построения - нужно просто взять некоторые отличия и квадратные корни). Если у вас есть радиус неопределенности для каждой точки и вы хотите сгенерировать радиус неопределенности для центра круга, то это сложнее, но вам все равно не нужна никакая статистика.   -  person Peter    schedule 13.10.2011
comment
@Peter У меня на самом деле ~ 590 координат, образующих приблизительную дугу. Мне нужна дуга окружности, которая лучше всего соответствует этим координатам, ее радиусу и остатку.   -  person user992379    schedule 13.10.2011
comment
Спасибо - теперь ясно, что у вас есть координаты (x,y,z) для каждой точки данных. В этой статье описывается метод поиска круга, который соответствует произвольному (конечному) набору плоские точки в смысле метода наименьших квадратов, хотя здесь не обсуждается остаток, и поэтому может потребоваться небольшая адаптация для вашего приложения.   -  person Peter    schedule 13.10.2011


Ответы (1)


В поваренной книге scipy есть длинный раздел о подгонке кругов: http://www.scipy.org/Cookbook/Least_Squares_Circle

person tillsten    schedule 13.10.2011