MATLABで非線形最小二乗問題を解く
Memo
指数関数のフィッティング編
%データを用意 xdata = [1:30]; ydata = 3*exp(0.04*xdata)+5+2*rand(1,30)-1; %xを係数としてフィッティングしたい関数をインラインで作成 fun = inline('x(1)*exp(x(2)*xdata)+x(3)','x','xdata'); %lsqcurvefit(フィッティングをしたい関数,パラメータの初期値,x方向のデータ,y方向のデータ) x= lsqcurvefit(fun, [6 0.1 6], xdata, ydata) plot(xdata,ydata,'b*',xdata,x(1)*exp(x(2)*xdata)+x(3),'k-'); title('指数関数のようなデータをフィッティング'),legend('実験データ',sprintf('近似曲線 : %0.1f*exp(%0.2f*x)+%0.1f',x(1),x(2),x(3)),2)
初期値の選び方によってはちゃんとフィッティングできないから注意
あとなんとかToolboxが入ってないと出来ないかも的だったらごめんなさい。