Подтвердить что ты не робот

Кривая устанавливает несортированные точки на плоскости

Вопрос: Как вы соответствуете кривой точкам на плоскости, если они не являются однозначными?

В приведенном примере, как бы подогнать кривую (например, черную) к шумным синим данным? Это похоже на сглаживание сплайнов, но я не знаю порядок данных.

curve.png

Matlab будет предпочтительнее, но псевдокод в порядке. Или указатель на то, что правильная терминология для этой проблемы будет большой.

Спасибо

4b9b3361

Ответ 2

Ваши данные выглядят как двумерный параметрический график (x,y) как функция некоторого базового параметра t. Таким образом, может быть возможно выполнить наименьшие квадраты подгонки x(t) и y(t), если вы можете придумать разумную модель для них. Ваши данные, как представляется, описывают limacon.

Ответ 3

Изменить: nvm неправильно истолковал вопрос. В любом случае, я оставлю этот ответ.

Возможно, попробуйте найти выпуклый корпус точек, а затем установите выпуклую оболочку на равнине

http://www.cse.unsw.edu.au/~lambert/java/3d/giftwrap.html < - включает java-анимацию реализации http://en.wikipedia.org/wiki/Convex_hull_algorithms

Если вы не хотите эффективности, есть некоторые очень простые реализации, такие как версия упаковки подарка, которая является O (n ^ 2) http://en.wikipedia.org/wiki/Gift_wrapping_algorithm

В версии с разделителем и покорением O (nlogn)

Ответ 4

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

возможно, самым наивным подходом было бы вычисление триангуляции Делоне (nlogn time), из которой аппроксимирует цикл гамильтониана минимального расстояния Евклида через точки. Вам все равно придется выяснить, где "концы". После заказа вы можете применить методы сплайнов. Для справки см. Поиск гамильтоновых циклов в триангуляциях Delaunay NP-Complete или статья Рейнельта по эвристике TSP, 1992 или EMST в Википедии

HTH,

Ответ 5

Для кусочных аппроксимаций с использованием B-сплайнов вы можете использовать этот пакет Matlab. Он работает в автоматическом и наполовину ручном режимах.

Ответ 6

Вам придется делать несколько кусочных фитингов или сплайнов. Не ожидайте, что любой алгоритм сможет сделать все это за один раз. Может быть как минимум три кривые: первая - до пересечения, петля, а затем назад от перекрестка вперед.

Ответ 7

Эта проблема действительно сложна, если у вас нет заказа. Выполнение наименьших квадратов на некотором (x (t), y (t)) легко - если вы знаете порядок t.

Вам, вероятно, понадобится какой-то алгоритм поиска. Генетический алгоритм может быть в порядке.