6

nlinfitMatlabでの関数の使用を理解して適用するのに問題があります。だから、ベクトルが与えられたとしましょう

x = [1, 2, 3, 4, 5] 
y = [2.3, 2.1, 1.7, .95, .70] 

そして、このデータを指数形式に適合させるように求められます (数値が機能するかどうかはわかりません。私が作成しました)。ここで、y = A*e^(Bx) + C(A/B/Cは定数です)。

私の理解では、nlinfit4つの引数、2つのベクトル、modelfunctionこの場合は上記の方程式である必要があり、次にbeta0、まったく理解できません。私の質問は、 in をどのように実装しmodelfunctionnlinftどのように見つけますかbeta0(プロット/フィットしたい 2 つのベクトルのみを操作する場合)、どのように実装する必要がありますか? この関数を任意の適合に適用できるように、誰かが例を示してもらえますか? 私はこれを将来たくさん使うと思うので、本当に学びたいと思っています。

4

2 に答える 2

3

ドキュメントの 2 番目の例を確認してください: http://www.mathworks.com/help/stats/nlinfit.html

基本的に、関数ハンドルをmodelfunctionパラメーターとして渡します。ファイル内に関数を作成し、前に を付けて関数名を渡すか、@次のような無名関数を作成します。

nlinfit(x, y, @(b,x)(b(1).*exp(b(2).*x) + b(3)), beta0)

上記では、すべてのパラメーターを単一のベクトルに貼り付けていることに気付くでしょう。関数の最初のパラメーターは、解決しようとしているすべてのポイントのベクトル (つまりA、あなたの場合は ) である必要があり、2 番目のパラメーターは である必要があります。BCx

ウッドチップスが言っbeta0たように、あなたの出発点であるため、あなたのABおよびCパラメータの最良の推測(素晴らしいものである必要はありません)です。[1 1 1]またはのようなものですがrand(3,1)、それは非常に特定の問題です。いくつか遊んでみるべきです。これはローカル検索機能であるため、ローカル最適化に行き詰まる可能性があるため、開始点が実際には非常に重要になる可能性があることを覚えておいてください.

于 2013-09-17T07:43:05.313 に答える