Использование параметров в lsqcurvefit

Я хочу использовать алгоритм Левенберга-Марквардта в команде lsqcurvefit. Я сделал следующее:

options = optimset('LevenbergMarquardt','on');
x = lsqcurvefit(@myfun,x0,xdata,ydata,options);

Я получаю следующую ошибку:

??? Error using ==> optim\private\lsqncommon
LSQCURVEFIT only accepts inputs of data type double.

Error in ==> lsqcurvefit at 149
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

Как побороть эту ошибку?


person Pankaj Goyal    schedule 04.07.2012    source источник


Ответы (1)


Вам следует ознакомиться с документацией для функции lsqcurvefit. Вы неправильно используете функцию. Чтобы передать структуру options, вы должны использовать версию с 7 аргументами и передать структуру в качестве последнего 7-го аргумента:

x = lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options);

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

Но вы также можете передать пустые матрицы, если не существует границ:

x = lsqcurvefit(@myfun,x0,xdata,ydata,[],[],options);
person Ole Thomsen Buus    schedule 04.07.2012