Main Content

各種内挿近似に対する外挿

"外挿" は、近似データ領域の外側で独立変数値の従属変数値を推定する処理です。多くの種類の手法で外挿が行われます。独立変数の近似データ X と、従属変数の Y がある場合、外挿法は関数

y=f(X,Y,u),

を作成します。ここで、u は基本区間の外側にある独立変数値のベクトル、y は対応する従属変数の推定です。

Curve Fitting Toolbox™ は、内挿曲線近似および内挿曲面近似に対して外挿をサポートします。内挿の詳細については、Curve Fitting Toolbox による内挿を参照してください。次の表に、Curve Fitting Toolbox でサポートされる外挿法を示します。

外挿法説明サポートされる内挿法
なし外挿なし

曲線近似 — PCHIP

曲面近似 — 自然近傍

曲線近似および曲面近似 — 3 次スプライン、線形、最近傍

線形

この手法は、近似データの凸包の境界上の各データ点で線形多項式を当てはめます。各線形多項式は、対応するデータ点での勾配に従います。

曲面近似 — 3 次スプライン、最近傍、自然近傍

曲線近似および曲面近似 — 線形

最近傍

この手法は、近似データの凸包の境界上の最も近い点の値に評価します。

曲線近似 — PCHIP

曲面近似 — 自然近傍

曲線近似および曲面近似 — 3 次スプライン、線形、最近傍

薄板スプライン

この手法は、薄板スプラインを近似データに当てはめ、それを近似データの凸包の外側に拡張します。

曲面近似 — 薄板スプライン

重調和スプライン

この手法は、重調和スプラインを近似データに当てはめ、それを近似データの凸包の外側に拡張します。

曲面近似 — 重調和 (v4)

PCHIP (区分的 3 次エルミート内挿多項式)

この手法は、形状維持区分的 3 次エルミート内挿多項式 (PCHIP) を近似データに当てはめ、それを近似データの凸包の外側に拡張します。

曲線近似 — PCHIP

3 次スプライン

この手法は、3 次内挿スプラインを近似データに当てはめ、それを近似データの凸包の外側に拡張します。

曲線近似 — 3 次スプライン

薄板スプライン外挿は関数 tpaps を使用し、PCHIP 外挿は関数 pchip を使用します。内挿曲面近似では、MATLAB® 関数 scatteredInterpolant を、なし、線形、最近傍の外挿法に使用し、MATLAB 関数 griddata を重調和外挿に使用します。

外挿法の選択

Curve Fitting Toolbox では、内挿法として線形、最近傍、または 3 次スプラインを使用する曲面近似に対して外挿法を選択することができます。使用する外挿法は、近似データの特性、曲線に求める滑らかさ、近似後の解析の要件などの要素により異なります。外挿法の指定は、曲線フィッター アプリを使用して対話的に行うか、コマンド ラインから関数 fit および fitoptions を使用して行うことができます。

外挿法の対話的な選択

  1. ワークスペースでデータを生成するか、データを読み込みます。

  2. MATLAB コマンド ラインで curveFitter と入力して曲線フィッター アプリを開きます。または、[アプリ] タブの [数学、統計および最適化] グループで [曲線フィッター] をクリックします。

  3. 曲線フィッター アプリで、曲線データを選択します。[曲線フィッター] タブの [データ] セクションで [データの選択] をクリックします。[近似データの選択] ダイアログ ボックスで、[X データ][Y データ]、および [Z データ] を選択します。

  4. [近似タイプ] セクションで矢印をクリックしてギャラリーを開き、[内挿] グループの [内挿] をクリックします。

Fit Options pane for Interpolant fit

[近似オプション] ペインの [内挿法] メニューを使用して内挿法を指定できます。内挿法が複数の外挿法をサポートする場合は、[外挿法] メニューを使用して外挿法を指定できます。

コマンド ラインからの外挿法の指定

関数 membranerandnを使用してノイズを含むデータを生成します。

n = 41;
M = membrane(1,20)+0.02*randn(n);
[X,Y] = meshgrid(1:n);

行列 M には、ノイズを追加した L 型膜のデータが格納されています。行列 XY には、M 内の対応する要素の行と列のインデックス値がそれぞれ格納されています。

データの表面プロットを表示します。

surf(X,Y,M)

プロットは、しわのある L 型膜を示します。膜内のしわは、データ内のノイズが原因で生じています。

関数 fit を使用した外挿法の指定

関数fitを使用して、しわのある膜に線形内挿法による曲面近似を行います。外挿法として最近傍を指定します。

linfit = fit([X(:),Y(:)],M(:),"linearinterp",ExtrapolationMethod="nearest")
linfit = 
     Linear interpolant:
       linfit(x,y) = piecewise linear surface computed from p
       with nearest neighbor extrapolation
     Coefficients:
       p = coefficient structure

出力で、関数が線形内挿と最近傍外挿を使用してデータの曲面近似を行っていることを確認します。

関数meshgridを使用して、XY のデータ領域を越えている近似を評価します。関数surfを使用して、結果をプロットします。

[Xq,Yq] = meshgrid(-10:50);
Zlin = linfit(Xq,Yq);

surf(Xq,Yq,Zlin);

プロットは、最近傍外挿法が凸包上のデータを使って各方向に曲面を拡張していることを示しています。この外挿法は、凸包を再現する波形を生成します。

関数 fitoptions を使用した外挿法の指定

関数fitoptionsを使用して、最近傍内挿と線形外挿を使用する近似オプションを生成します。

fitOptions = fitoptions("nearestinterp",ExtrapolationMethod="linear")
fitOptions = 
  nearestinterpoptions with properties:

    ExtrapolationMethod: 'linear'
              Normalize: 'off'
                Exclude: []
                Weights: []
                 Method: 'NearestInterpolant'

fitOptions は、最近傍内挿と線形外挿を指定する近似オプション オブジェクトです。

fitOptions 内のオプションを使用して、しわのある膜に曲面近似を行います。

nearfit = fit([X(:),Y(:)],M(:),"nearestinterp",fitOptions)
nearfit = 
     Nearest neighbor interpolant:
       nearfit(x,y) = piecewise constant surface computed from p
       with linear extrapolation
     Coefficients:
       p = coefficient structure

XY のデータ領域を越える近似を評価し、その結果をプロットします。

Znear = nearfit(Xq,Yq);
surf(Xq,Yq,Znear);

プロットは、線形外挿法が XY の凸包の外側でスパイクを生成していることを示しています。スパイクを形成している平面セグメントは、凸包境界上のデータ点での勾配に従っています。

参考

関数

オブジェクト