MATLAB Function Reference    

interp1

1 次データ補間(テーブルルックアップ)

表示

詳細

yi = interp1(x,Y,xi) は、xi の要素に対応する要素を含むベクトル yi を、ベクトル xY からの内挿を使って、出力します。ベクトル x は、データ Y が与えられる点を指定します。Y が行列の場合、内挿は、Y の各列に対してなされ、yi は、length(xi)size(Y,2) 列のサイズになります。

yi = interp1(Y,xi) は、x = 1:N を仮定しています。ここで、N は、ベクトル Y に対する Y の長さ、または、行列 Y に対する size(Y,1) のいずれかです。

yi = interp1(x,Y,xi,method) は、つぎの手法を使って、内挿を行います。

'nearest'
最近傍内挿
'linear'
線形内挿(デフォルト)
'spline'
キュービックスプライン内挿
'pchip'
区分的キュービックエルミート内挿
'cubic'
('pchip'と同じ)
'v5cubic'
MATLAB 5 で使用されたキュービック内挿

xi の要素が、x を基にした区間の外に位置する場合、指定した内挿法は、外挿を使います。また、yi = interp1(x,Y,xi,method,extrapval) は、extrapval を使って外挿された値を使います。NaN が、extrapval に対して使われることがあります。

コマンド interp1 は、データ点間を内挿します。データを対象とする1次元関数の値、すなわち、中間の値を検出します。この関数は、下で示され、ベクトル x, Y, xi, yi 間の関係を示すものです。

内挿は、テーブルルックアップ と同じ操作です。テーブルックアップの項で記述されているように、テーブル は、[x,Y] で、interp1 は、x の中の xi の要素を、その位置をベースに探索し、Y の要素内に内挿された値 yi を出力します。

例題

例題 1. 荒い正弦波を作成し、横軸方向に細かい点を取り、内挿します。

例題 2. アメリカ合衆国の1900年から1990年までの年単位の人口のデータを表す、2つのベクトルがあります。

ステートメント interp1(t,p,1975) を使って、1975 年の人口の推定を行うために、人口データに内挿を行います。結果は、つぎのようになります。

1900年から2000年までの各年について、データの内挿を行い、結果をプロットします。

テーブルルックアップの項での内挿を考えることが便利な場合が、しばしば生じます。ここで、データは単一テーブルにストアされています。人口データの一部が、5行2列のテーブルにストアされている場合、

1975年の人口は、行列 tab と共に、テーブルルックアップにより、つぎのように得られます。

アルゴリズム

コマンド interp1 は、MATLAB の M-ファイルです。引数 'nearest' や 'linear' で設定される方法は、直接的な実現方法を使っています。

引数 'spline' による方法については、interp1 は、関数 ppval, mkpp, unmkpp を使用する関数 spline をコールします。これらのルーチンは、区分的多項式に対して機能する関数型をしています。spline は、これらを使って、キュービックスプライン内挿を行います。よりアドバンストな手法にアクセスするには、下記の参考文献や Spline Toolboxを参照してください。

引数 'pchip''cubic' による方法に対して、interp1 は、ベクトル xy を使って、区分的キュービック内挿を行う関数 pchip をコールします。この方法は、データの型と単調さを保存できます。詳細は、pchip のリファレンスページを参照してください。

参考

interpft, interp2, interp3, interpn, pchip, spline

参考文献

de Boor, C., A Practical Guide to Splines, Springer-Verlag, 1978.


  int8, int16, int32 interp2