1

コマンドでLevenbergMarquardtアルゴリズムを使用したいと思い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] = ...

このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

3

関数のドキュメントを確認する必要がありますlsqcurvefit。関数を間違って使用しています。構造体を渡すにはoptions、7引数バージョンを使用し、最後の7番目の引数として構造体を渡す必要があります。

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

これは、5番目と6番目の引数としてlbとを定義する必要があることを意味します。ubこれらは、の設計変数の下限と上限ですx

ただし、境界が存在しない場合は、空の行列を渡すこともできます。

x = lsqcurvefit(@myfun,x0,xdata,ydata,[],[],options);
于 2012-07-04T20:55:11.990 に答える