0

私はカーブを持っていIxVます。また、この曲線に当てはめたい方程式があるIxVので、その定数を調整できます。それは次のように与えられます:

I = I01(exp((V-R*I)/(n1*vth))-1)+I02(exp((V-R*I)/(n2*vth))-1)

vthRは既知の定数なのでI01I02n1、のみを達成したいですn2。問題は、ご覧のとおり、私は自分自身に依存していることです。カーブ フィッティング ツールボックスを使用しようとしましたが、再帰方程式では機能しないようです。

これでカーブ フィッティング ツールボックスを機能させる方法はありますか? ない場合は、どうすればよいですか?

4

2 に答える 2

0

と が関数ではなく変数であると仮定するとI01I02次のように問題を設定する必要があります。

a0 = [I01 I02 n1 n2];
MinFun = @(a) abs(a(1)*(exp(V-R*I)/(a(3)*vth))-1) + a(2)*(exp((V-R*I)/a(4)*vth))-1) - I);

aout = fminsearch(a0,MinFun);

I を引いて絶対値をとると、両辺が等しい点がMinFunがゼロ(最小化)になる点になります。

于 2013-04-19T18:18:23.477 に答える
0

いいえ、CFTB はそのような再帰的に定義された関数に適合しません。また、I のエラーは、I の真の値がどの時点でも不明であるため、一種の変数エラーの問題を引き起こします。あなたが持っているのは、Iの「測定された」値だけです。

I のエラー、または適合性の欠如、ノイズ、モデルの問題などは式自体で使用されるため、I のエラーの問題は深刻な場合があります。次に、これらの不正確な値を指数化し、混乱を招く可能性があります。

反復アプローチを使用できる場合があります。したがって、次のようなもの

% 0. Initialize I_pred
I_pred = I;

% 1. Estimate the values of your coefficients, for this model:
% (The curve fitting toolbox CAN solve this problem, given I_pred)
I = I01(exp((V-R*I_pred)/(n1*vth))-1)+I02(exp((V-R*I_pred)/(n2*vth))-1)

% 2. Generate new predictions for I_pred
I_pred = I01(exp((V-R*I_pred)/(n1*vth))-1)+I02(exp((V-R*I_pred)/(n2*vth))-1)

% Repeat steps 1 and 2 until the parameters from the CFTB stabilize.

上記の疑似コードは、開始値が良好で、モデル/データに大きなエラー/ノイズがない場合にのみ機能します。天気の良い日でも、上記のアプローチではうまく収束しない場合があります。しかし、それ以外の希望はほとんどありません。

于 2013-04-19T14:47:59.083 に答える