Двумерное приближение кривой - PullRequest
4 голосов
/ 04 января 2012

вот что я хочу сделать (желательно с Matlab):

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

На первый взгляд, это очень похоже на то, чего можно достичь с помощью spap2 из набора инструментов CurveFitting (хороший пример в разделе Приближение наименьших квадратов здесь ).Но у этого алгоритма есть некоторый главный недостаток: он предполагает функцию (с ровно одним y (x) для каждого x), но мне нужна кривая в 2d (которая может иметь несколько y (x) для одного x).Это приводит к проблемам, когда автомобили поворачивают направо или налево более чем на 90 градусов.Кроме того, он принимает вертикальные смещения, а не перпендикулярные смещения (согласно определению на wolfram ).

Кто-нибудь знает, как решить эту проблему?Я думал об использовании B-Spline и менял количество узлов и степень до тех пор, пока не достигнул определенного подходящего качества, но я не могу найти способ решить эту проблему аналитически или с помощью функций, предоставляемых CurveFitting Toolbox.Есть ли способ решить эту проблему без числовой оптимизации?

1 Ответ

0 голосов
/ 18 февраля 2012

Мбеккиш прав. Чтобы получить достаточную гибкость в форме кривой, вы должны использовать параметрическое представление кривой (x (t), y (t)) вместо явного представления y (x). См. Параметрическое уравнение .

Учитывая n последовательных точек на кривой, назначьте им их истинное время, если вы знаете это, или просто целые числа 0..n-1, если вы этого не знаете. Затем дважды вызовите spap2 с векторами T, X и T, Y вместо X, Y. Теперь для произвольного t вы получите точку (x, y) на кривой.

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

...