Lsqcurvefit для 2D данных - PullRequest
       7

Lsqcurvefit для 2D данных

1 голос
/ 30 июня 2010

Как использовать lsqcurvefit для подгонки 2D-функции к 2D-массиву?

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Можно переформулировать проблему для lsqcurvefit , но почему бы не использовать lsqnonlin напрямую, поскольку lsqcurvefit - всего лишь оболочка для lsqnonlin?

Скажем, у вас есть массивы xx, yy, zz, которые определяют вашу 2D-поверхность, так что surf(xx,yy,zz) наносит на поверхность поверхность.

Затем вы создаете функцию objectiveFunction(params,xx,yy,zz), которая оценивает zz для каждой координаты, определенной в xx и yy, с параметрами, определенными в params, и которая возвращает вектор разности между zz и функция вывода.

Наконец, вы присваиваете массиву initialGuess начальное предположение для параметров и вызываете lsqnonlin следующим образом:

estimatedParameters = lsqnonlin(@(params)objectiveFunction(params,xx,yy,zz),initialGuess)
0 голосов
/ 30 июня 2010

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

Если это так, то сгенерируйте прямоугольные массивы индексов строк и столбцов, используя meshgrid. Теперь вы можете использовать их в своей функции. Передайте их непосредственно вашей целевой функции, используя дескриптор функции. Не забудьте использовать элементарные операторы для умножения (. *), Деления (./) и степеней (. ^) В вашей функции.

Фактический выбор модели - это, конечно, ваш выбор.

Что касается использования lsqcurvefit (в отличие от lsqnonlin), то они по сути одинаковы, но с немного другим интерфейсом.

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