0

fsolveとlsqcurvefitを使用して、データセットに適合する陰関数によって定義されたモデルの最適化されたパラメーターを見つけようとしています。別々のmファイルで3つの関数を定義しました。1つは定義する4つのパラメーターの陰関数の定義、2つ目はfsolveを使用して定義された陰関数の根を検索し、3つ目はlsqcurvefitを使用して最適化された値を検索します。 4つのパラメータについて。当然、パラメーターに十分な初期値を定義する必要がありますが、さまざまな妥当な組み合わせを試した後、lsqcurvefitは常に約20〜30回の反復で実行され(matlabは、各反復後にfsolveによって検出された解で計算されたベクトル値を出力します)、次に出力します。

No solution found.

fsolve stopped because the problem appears regular as measured by the gradient,
but the vector of function values is not near zero as measured by the
default value of the function tolerance.

<stopping criteria details>

??? Error using ==> lsqcurvefit at 253
Function value and YDATA sizes are incommensurate.

Error in ==> optimointi at 5
z = lsqcurvefit('laske_i',parametrit,V_vektori,I_vektori_mitattu,[],[],options);

「関数値とYDATAサイズが不釣り合いである」ことがわかりません。突然、反復が最初に20〜30回実行されるときに。各反復後に出力される値は、ほぼゼロでいっぱいです(適切に適合)が、最後のいくつかの「爆発」は0から1になります(係数は10の累乗)。エラーに関するヘルプをいただければ幸いです。

4

2 に答える 2

0

エラーは、fsolveがどのように機能するかにあります。実際に機能したのはfsolveでしたが、ドメインベクトルの各要素のfsolveの結果をベクトルにするために、forループを追加する必要がありました。これが、関数値とYDATAが実際に不釣り合いだった理由です。

于 2010-11-29T12:57:52.030 に答える
0

私の場合、「関数値とYDATAサイズが不整合である」というlsqcurvefitのエラーは、Ydataとして使用していたベクトルが原因でしたが、実際には非常にばかげたものでした。ベクトルは、y = [1 2 3]とは異なり、y = [1; 2; 3]の列形式である必要があります。これは、xdataも列と同様であるため、lsqcurvefitで問題を引き起こしていました。

于 2015-11-12T11:58:26.470 に答える