カスタム モデル
カスタム モデルとライブラリ モデル
必要なパラメトリック方程式が Curve Fitting Toolbox™ ライブラリに含まれていない場合は、独自のカスタム式を作成することができます。ただし、ライブラリ モデルを使用すると収束が速いという利点があります。これは、以下の理由によります。
大部分のライブラリ モデルでは、最適な既定の係数開始点が計算されます。カスタム モデルの場合、区間 [0,1] でランダムな既定の開始点が選択されます。カスタム モデルの適切な開始点を見つける必要があります。
ライブラリ モデルでは解析的なヤコビアンを使用します。カスタム モデルでは有限差分を使用します。
線形近似と非線形近似
カスタム式近似タイプを使用してカスタムの一般方程式を作成できます。一般モデルは (おそらく非線形な) 項の非線形結合です。これらはパラメーターについて非線形である場合がある方程式で定義されます。カスタム式近似では非線形最小二乗近似の手順を使用します。
カスタム式近似タイプを使用してカスタム線形方程式を定義できます。ただし、非線形近似は線形最小二乗近似よりも効率が悪く、通常は時間がかかります。
方程式を一連の線形関数で表せるかわからない場合は、[カスタム式] を選択します。適切な開始点を探す必要がある場合があります。
カスタム式の線形最小二乗近似が必要な場合は、代わりに [線形近似] モデル タイプを選択します。詳細は、カスタム線形近似を参照してください。
カスタム式近似の対話的な選択
曲線フィッター アプリで、[曲線フィッター] タブの [近似タイプ] セクションにある矢印をクリックしてギャラリーを開きます。近似ギャラリーで、[カスタム] グループの [カスタム式] をクリックします。
[近似オプション] ペインで、カスタム式近似を使用して独自の方程式を定義します。[カスタム式] をクリックすると、カスタム式の例が表示されます。以下の図は曲線データの場合です。
曲面データの場合、カスタム式の例は x
と y
の両方を使用します。
x
、y
、z
を編集して有効な任意の変数名に変更できます。下のボックスで、例を編集して独自のカスタム式を定義します。独自の変数名を使用した有効な MATLAB® 式を入力できます。関数名またはスクリプト名を指定できます (曲線フィッター アプリでのファイルで定義された曲線による近似を参照)。
開始点または範囲を指定する場合は、[詳細オプション] をクリックします。既定の設定では、開始値は区間 [0,1] の間でランダムに選択され制約がありません。適切な開始点および範囲を探す必要がある場合があります。例については、ENSO データのカスタム非線形解析を参照してください。
近似オプションを設定し、その他の近似設定を変更すると、可能な場合は下限、上限、開始点の選択がアプリに記憶されます。カスタム式の場合、曲線フィッター アプリは常にユーザーの値を記憶します。ただし、多くのライブラリ モデルでは、近似設定を変更すると開始点または下限の新しい最適な値が自動的に計算されます。
保存済みの曲線フィッター アプリ セッションの一部としてカスタム式を保存できます。
関数は、近似および近似の前処理の間に何度も実行される可能性があります。データをファイルに書き込む、診断情報をコマンド ウィンドウに表示するなどの副次的な影響をもつ関数を使用する場合、時間がかかる可能性があることに注意してください。
以下の例を参照してください。
曲線フィッター アプリでのファイルで定義された曲線による近似
この例では、曲線フィッター アプリで近似モデルとして関数名またはスクリプト名を指定する方法を示します。ファイルに関数を定義し、それを使用して曲線で近似します。
関数を MATLAB ファイルに定義します。
function y = piecewiseLine(x,a,b,c,d,k) % PIECEWISELINE A line made of two pieces % that is not continuous. y = zeros(size(x)); % This example includes a for-loop and if statement % purely for example purposes. for i = 1:length(x) if x(i) < k y(i) = a + b.* x(i); else y(i) = c + d.* x(i); end end end
MATLAB パス上にファイルを保存します。
データを定義し、曲線フィッター アプリを開きます。
x = [0.81;0.91;0.13;0.91;0.63;0.098;0.28;0.55; ... 0.96;0.96;0.16;0.97;0.96]; y = [0.17;0.12;0.16;0.0035;0.37;0.082;0.34;0.56; ... 0.15;-0.046;0.17;-0.091;-0.071]; curveFitter
曲線フィッター アプリ内の [曲線フィッター] タブで、[データ] セクションの [データの選択] をクリックします。[近似データの選択] ダイアログ ボックスで、[X データ] および [Y データ] のリスト内で、それぞれ
x
およびy
を選択します。近似名としてPiecewise Function
を入力します。自分で定義した関数
piecewiseLine
を曲線フィッター アプリで使用します。[曲線フィッター] タブの [近似タイプ] セクションで、矢印をクリックしてギャラリーを開きます。近似ギャラリーで、[カスタム] グループの [カスタム式] をクリックします。[近似オプション] ペインで、カスタム式のテキスト ボックスに関数の式を入力します。この関数は、x
データといくつかの近似用パラメーターを取ります。piecewiseLine(x,a,b,c,d,k)
曲線フィッター アプリにより、関数を使用して近似が作成されます。
ヒント
コマンド ラインで同じ関数を使用して近似する場合は、同じ式を fittype
への入力として使用してから、fittype
を fit
への入力として使用します。
ft = fittype("piecewiseLine(x,a,b,c,d,k)");
f = fit(x,y,ft)
fit
を参照してください。コマンド ラインでのカスタム式近似の選択
カスタム モデルで近似するには、次のいずれかを行います。
この例では、データを読み込み、ワイブル モデルを定義するカスタム式を関数 fit
への入力として使用します。
time = [ 0.1; 0.1; 0.3; 0.3; 1.3; 1.7; 2.1; 2.6; 3.9; 3.9; ... 5.1; 5.6; 6.2; 6.4; 7.7; 8.1; 8.2; 8.9; 9.0; 9.5; ... 9.6; 10.2; 10.3; 10.8; 11.2; 11.2; 11.2; 11.7; 12.1; 12.3; ... 12.3; 13.1; 13.2; 13.4; 13.7; 14.0; 14.3; 15.4; 16.1; 16.1; ... 16.4; 16.4; 16.7; 16.7; 17.5; 17.6; 18.1; 18.5; 19.3; 19.7;]; conc = [0.01; 0.08; 0.13; 0.16; 0.55; 0.90; 1.11; 1.62; 1.79; 1.59; ... 1.83; 1.68; 2.09; 2.17; 2.66; 2.08; 2.26; 1.65; 1.70; 2.39; ... 2.08; 2.02; 1.65; 1.96; 1.91; 1.30; 1.62; 1.57; 1.32; 1.56; ... 1.36; 1.05; 1.29; 1.32; 1.20; 1.10; 0.88; 0.63; 0.69; 0.69; ... 0.49; 0.53; 0.42; 0.48; 0.41; 0.27; 0.36; 0.33; 0.17; 0.20;]; f = fit(time,conc,"c*a*b*x^(b-1)*exp(-a*x^b)","StartPoint",[0.01 2 5]) plot(f,time,conc)
fittype
を使用してカスタム モデルを定義するには、次の形式を使用します。
f = fittype(expr)
expr
に含まれる MATLAB 式に対するカスタム モデルの fittype
オブジェクトが構築されます。以下の詳細については、fittype
のリファレンス ページを参照してください。
fittype
を使用した従属変数と独立変数、問題のパラメーター、係数の指定。カスタム式の線形近似アルゴリズムを使用するための項の cell 配列または string 配列の指定。
が文字列または無名関数の場合、非線形近似アルゴリズムが使用されます。expr
線形近似の詳細については、コマンド ラインでの線形近似の選択を参照してください。
線形および非線形カスタム モデルの例。
詳しい手順の例については、国勢調査のカスタム非線形近似を参照してください。