Main Content

曲線近似および曲面近似のオブジェクトとオブジェクト関数

このトピックでは、曲線近似オブジェクトおよび曲面近似オブジェクトを作成する方法、およびそれらのオブジェクト関数を使って近似を操作する方法を説明します。Curve Fitting Toolbox™ オブジェクトおよびオブジェクト関数を MATLAB® コマンド ラインで使用するか、曲線近似および曲面近似のアプリケーション用に MATLAB プログラムを作成します。Curve Fitting Toolbox を他の MATLAB ツールボックスと組み合わせて使い、曲線近似および曲面近似のワークフローを作成することもできます。

このトピックでは、曲線近似および曲面近似の作成と操作をプログラムで行う方法を中心に説明します。この方法以外にも、曲線フィッター アプリを使用すれば、Curve Fitting Toolbox オブジェクトおよびオブジェクト関数を、プログラミングなしで便利かつ対話的に使用できます。[曲線フィッター] タブの [近似タイプ] セクションで近似を選択できます。

曲線近似オブジェクト

MATLAB プログラミングでは、すべてのワークスペース変数が特定の "クラス" の "オブジェクト" です。MATLAB クラスのよく知られた例は doublechar および function_handle です。オブジェクト指向プログラミングを使用してカスタムの MATLAB クラスを作成することもできます。

"オブジェクト関数" は、特定のクラスのオブジェクトにおいてのみ動作する関数です。"データ型" は、オブジェクトとオブジェクト関数を一緒にパッケージ化します。これにより、オブジェクト関数がその型のオブジェクトにおいてのみ動作し、その他の型のオブジェクトでは動作しないようにします。オブジェクトとオブジェクト関数のカプセル化を明確に定義することがオブジェクト指向プログラミングの目的です。

Curve Fitting Toolbox ソフトウェアは、曲線近似を実行するための新しい MATLAB データ型を提供します。

  • fittype — オブジェクトによって、データのパラメトリック モデルの記述情報がカプセル化されます。オブジェクト関数により、その情報へのアクセスや変更が可能です。

  • cfit および sfit — 曲線および曲面用の fittype の 2 つのサブタイプ。オブジェクトは、係数、信頼区間、近似の統計量などに値を代入することにより、特定の近似から情報を取得します。オブジェクト関数により、プロット、外挿、積分などで近似を後処理できます。

Relationship of curve fitting objects

cfitfittype のサブタイプであるため、cfitfittype のすべてのオブジェクト関数を継承しています。つまり、fittype のオブジェクト関数は fittypecfit のどちらのオブジェクトにも適用できますが、cfit のオブジェクト関数は cfit オブジェクトのみに使用できます。これは、sfit オブジェクトについても同じです。

たとえば、モデルが線形か非線形かを判定する fittype のオブジェクト関数 islinear は、近似の前後、つまり fittype オブジェクトと cfit オブジェクトのどちらにも論理的に適用できます。一方、cfit のオブジェクト関数である coeffvaluesconfint はそれぞれ近似係数と近似の信頼区間を返すメソッドであり、係数が未決定のパラメトリック モデルを記述する一般的な fittype オブジェクトに適用しても意味がありません。

曲線近似オブジェクトには、オブジェクトの型、モデルの詳細、またはカプセル化する近似に依存するプロパティがあります。たとえば、次のコードは 2 つの曲線近似タイプのコンストラクター オブジェクト関数を使用して fittype オブジェクトの fcfit オブジェクトの 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

曲線近似オブジェクト関数

曲線近似オブジェクト関数を使用すると、曲線近似オブジェクトの作成、アクセス、変更を行うことができます。また、plotintegrate などのオブジェクト関数を使用すると、曲線近似オブジェクトにカプセル化されている情報全体を一様に処理する操作を実行できます。

次の表にリストされているオブジェクト関数は、cfit オブジェクトを含め、すべての fittype オブジェクトで使用できます。

近似タイプのオブジェクト関数説明

argnames

入力引数名を取得

category

近似カテゴリを取得

coeffnames

係数名を取得

dependnames

従属変数名を取得

feval

指定した予測子でモデルを評価

fittype

fittype オブジェクトを構築

formula

式を取得

indepnames

独立変数名を取得

islinear

モデルが線形かどうかを判断

numargs

入力引数の数を取得

numcoeffs

係数の数を取得

probnames

問題依存のパラメーター名を取得

setoptions

モデル近似オプションを設定

type

モデルの名前を取得

次の表にリストされているオブジェクト関数は、cfit オブジェクトでのみ使用できます。

曲線近似のオブジェクト関数説明

cfit

cfit オブジェクトを構築

coeffvalues

係数値を取得

confint

近似係数の信頼区間を取得

differentiate

近似を微分

integrate

近似を積分

plot

近似をプロット

predint

予測区間を取得

probvalues

問題依存のパラメーター値を取得

曲線近似オブジェクトの全オブジェクト関数のリストは、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 つは、曲線フィッター アプリで近似からファイルを生成することです。この方法により、単一データセットの対話型の解析を、コマンド ラインでの解析または複数データセットのバッチ処理に再利用可能な関数に変換できます。生成したファイルは変更せずに使用することも、必要に応じてコードを編集してカスタマイズすることもできます。詳細については、コードの生成とワークスペースへの近似のエクスポートを参照してください。