曲線近似および曲面近似のオブジェクトとオブジェクト関数
このトピックでは、曲線近似オブジェクトおよび曲面近似オブジェクトを作成する方法、およびそれらのオブジェクト関数を使って近似を操作する方法を説明します。Curve Fitting Toolbox™ オブジェクトおよびオブジェクト関数を MATLAB® コマンド ラインで使用するか、曲線近似および曲面近似のアプリケーション用に MATLAB プログラムを作成します。Curve Fitting Toolbox を他の MATLAB ツールボックスと組み合わせて使い、曲線近似および曲面近似のワークフローを作成することもできます。
このトピックでは、曲線近似および曲面近似の作成と操作をプログラムで行う方法を中心に説明します。この方法以外にも、曲線フィッター アプリを使用すれば、Curve Fitting Toolbox オブジェクトおよびオブジェクト関数を、プログラミングなしで便利かつ対話的に使用できます。[曲線フィッター] タブの [近似タイプ] セクションで近似を選択できます。
曲線近似オブジェクト
MATLAB プログラミングでは、すべてのワークスペース変数が特定の "クラス" の "オブジェクト" です。MATLAB クラスのよく知られた例は double
、char
および function_handle
です。オブジェクト指向プログラミングを使用してカスタムの MATLAB クラスを作成することもできます。
"オブジェクト関数" は、特定のクラスのオブジェクトにおいてのみ動作する関数です。"データ型" は、オブジェクトとオブジェクト関数を一緒にパッケージ化します。これにより、オブジェクト関数がその型のオブジェクトにおいてのみ動作し、その他の型のオブジェクトでは動作しないようにします。オブジェクトとオブジェクト関数のカプセル化を明確に定義することがオブジェクト指向プログラミングの目的です。
Curve Fitting Toolbox ソフトウェアは、曲線近似を実行するための新しい MATLAB データ型を提供します。
fittype
— オブジェクトによって、データのパラメトリック モデルの記述情報がカプセル化されます。オブジェクト関数により、その情報へのアクセスや変更が可能です。cfit
およびsfit
— 曲線および曲面用のfittype
の 2 つのサブタイプ。オブジェクトは、係数、信頼区間、近似の統計量などに値を代入することにより、特定の近似から情報を取得します。オブジェクト関数により、プロット、外挿、積分などで近似を後処理できます。
cfit
は fittype
のサブタイプであるため、cfit
は fittype
のすべてのオブジェクト関数を継承しています。つまり、fittype
のオブジェクト関数は fittype
と cfit
のどちらのオブジェクトにも適用できますが、cfit
のオブジェクト関数は cfit
オブジェクトのみに使用できます。これは、sfit
オブジェクトについても同じです。
たとえば、モデルが線形か非線形かを判定する fittype
のオブジェクト関数 islinear
は、近似の前後、つまり fittype
オブジェクトと cfit
オブジェクトのどちらにも論理的に適用できます。一方、cfit
のオブジェクト関数である coeffvalues
と confint
はそれぞれ近似係数と近似の信頼区間を返すメソッドであり、係数が未決定のパラメトリック モデルを記述する一般的な fittype
オブジェクトに適用しても意味がありません。
曲線近似オブジェクトには、オブジェクトの型、モデルの詳細、またはカプセル化する近似に依存するプロパティがあります。たとえば、次のコードは 2 つの曲線近似タイプのコンストラクター オブジェクト関数を使用して fittype
オブジェクトの f
と cfit
オブジェクトの c
を作成します。
f = fittype('a*x^2+b*exp(n*x)')
f = General model: f(a,b,n,x) = a*x^2+b*exp(n*x)
c = cfit(f,1,10.3,-1e2)
c = General model: c(x) = a*x^2+b*exp(n*x) Coefficients: a = 1 b = 10.3 n = -100
fittype
オブジェクトの表示オブジェクト関数は、formula
および indepnames
からの出力をつなぎ合わせて基本的な情報のみを返すことに注意してください。
cfit
オブジェクトと fittype
オブジェクトは feval
を使用して予測子の値 x
で評価されます。次の関数構文を使用すると feval
を間接的に呼び出すことができます。
y = cfun(x); % cfit objects y = ffun(coef1,coef2,...,x); % fittype objects
曲線近似オブジェクト関数
曲線近似オブジェクト関数を使用すると、曲線近似オブジェクトの作成、アクセス、変更を行うことができます。また、plot
や integrate
などのオブジェクト関数を使用すると、曲線近似オブジェクトにカプセル化されている情報全体を一様に処理する操作を実行できます。
次の表にリストされているオブジェクト関数は、cfit
オブジェクトを含め、すべての fittype
オブジェクトで使用できます。
近似タイプのオブジェクト関数 | 説明 |
---|---|
入力引数名を取得 | |
近似カテゴリを取得 | |
係数名を取得 | |
従属変数名を取得 | |
指定した予測子でモデルを評価 | |
| |
式を取得 | |
独立変数名を取得 | |
モデルが線形かどうかを判断 | |
入力引数の数を取得 | |
係数の数を取得 | |
問題依存のパラメーター名を取得 | |
モデル近似オプションを設定 | |
モデルの名前を取得 |
次の表にリストされているオブジェクト関数は、cfit
オブジェクトでのみ使用できます。
曲線近似のオブジェクト関数 | 説明 |
---|---|
| |
係数値を取得 | |
近似係数の信頼区間を取得 | |
近似を微分 | |
近似を積分 | |
近似をプロット | |
予測区間を取得 | |
問題依存のパラメーター値を取得 |
曲線近似オブジェクトの全オブジェクト関数のリストは、MATLAB の methods
コマンドで確認できます。たとえば、
f = fittype('a*x^2+b*exp(n*x)');
methods(f)
Methods for class fittype: argnames dependnames fittype islinear probnames category feval formula numargs setoptions coeffnames fitoptions indepnames numcoeffs type
methods
でリストされるオブジェクト関数の一部は上の表に記載されておらず、Curve Fitting Toolbox のドキュメンテーションにもそれらのリファレンス ページはありません。このような補助的なオブジェクト関数は、一般に曲線フィッター アプリが使用する低水準操作であり、曲線近似アプリを記述するときは通常必要ありません。
getfield
および setfield
に相当する、fittype
オブジェクトで使用できるグローバル アクセサー オブジェクト関数はありません。アクセスは前述のオブジェクト関数に限定されています。これは fittype
オブジェクトの多くのプロパティが、アクセス可能な他のプロパティから派生しているためです。たとえば、
f = fittype('a*cos( b*x-c )')
f = General model: f(a,b,c,x) = a*cos( b*x-c )
formula(f)
ans = 'a*cos( b*x-c )'
argnames(f)
ans = 4×1 cell array {'a'} {'b'} {'c'} {'x'}
fittype
オブジェクト f
はその式の指定により構築され、したがってこのオブジェクトの基本的なプロパティへの書き込みアクセスは必ず許可されます。オブジェクト関数 formula
を使用すると、そのプロパティに読み取りアクセスできます。また、オブジェクト関数 argnames
を使用すると、オブジェクトの引数名に読み取りアクセスできます。ただし、引数名は式から派生しているため、引数名に直接書き込みアクセスすることはできません。引数名を設定する必要がある場合は、式を設定します。
曲面近似のオブジェクトとオブジェクト関数
曲面近似オブジェクト (sfit
) は曲面近似操作の結果を保存します。これにより、コマンド ラインで簡単に近似をプロットおよび解析できます。
cfit
オブジェクトと同様に、sfit
オブジェクトは fittype
オブジェクトのサブクラスであり、曲線近似オブジェクト関数にリストされているものとまったく同じ fittype
のオブジェクト関数を継承します。
また、sfit
オブジェクトには sfit
オブジェクト専用のオブジェクト関数があります。詳細は、sfit
を参照してください。
曲面近似とプロットのコードから有用なプログラムを迅速に組み立てる方法の 1 つは、曲線フィッター アプリで近似からファイルを生成することです。この方法により、単一データセットの対話型の解析を、コマンド ラインでの解析または複数データセットのバッチ処理に再利用可能な関数に変換できます。生成したファイルは変更せずに使用することも、必要に応じてコードを編集してカスタマイズすることもできます。詳細は、コードの生成とワークスペースへの近似のエクスポートを参照してください。