2012-01-04 3 views
4

вот что я хочу сделать (желательно с Matlab):двухмерная аппроксимация

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

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

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

+2

Не могли бы вы сделать каждый путь функцией времени? Для каждого значения времени автомобиль будет иметь только одну координату (x, y). – mbeckish

+2

Это приводит к тому, что каждый автомобиль работает с другой скоростью. Если t = 0 задано в данной точке перед перекрестком, один автомобиль, возможно, уже закончил поворотную манекену, в то время как другой (более осторожный автомобиль) не имеет такого же количества времени. Как следствие, среднее значение (x, y) обоих автомобилей в то же время не приводит к кривой с наименьшим расстоянием (в плоскости x-y) до измеренных трасс. – ILikeCars

+1

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

ответ

0

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

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

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

+0

Это означает, что все автомобили движутся с одинаковой скоростью, так как предполагается, что для разных путей (x_i (t_0), y_i (t_0)) близки друг к другу для всех путей i и времени t_0. Я думаю, вам нужен способ усреднения, который также позволяет репарамизировать пути. –

 Смежные вопросы

  • Нет связанных вопросов^_^