| MATLAB Function Reference |
interp1
表示
yi = interp1(x,Y,xi) yi = interp1(Y,xi) yi = interp1(x,Y,xi,method) yi = interp1(x,Y,xi,method,extrapval)
詳細
は、yi = interp1(x,Y,xi) xi の要素に対応する要素を含むベクトル yi
を、ベクトル x と Y
からの内挿を使って、出力します。ベクトル 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. 荒い正弦波を作成し、横軸方向に細かい点を取り、内挿します。
x = 0:10; y = sin(x); xi = 0:.25:10; yi = interp1(x,y,xi); plot(x,y,'o',xi,yi)
例題 2. アメリカ合衆国の1900年から1990年までの年単位の人口のデータを表す、2つのベクトルがあります。
t = 1900:10:1990;
p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633];
ステートメント interp1(t,p,1975)
を使って、1975
年の人口の推定を行うために、人口データに内挿を行います。結果は、つぎのようになります。
ans =
214.8585
1900年から2000年までの各年について、データの内挿を行い、結果をプロットします。
x = 1900:1:2000; y = interp1(t,p,x,'spline'); plot(t,p,'o',x,y)
テーブルルックアップの項での内挿を考えることが便利な場合が、しばしば生じます。ここで、データは単一テーブルにストアされています。人口データの一部が、5行2列のテーブルにストアされている場合、
tab =
1950 150.697
1960 179.323
1970 203.212
1980 226.505
1990 249.633
1975年の人口は、行列 tab
と共に、テーブルルックアップにより、つぎのように得られます。
p = interp1(tab(:,1),tab(:,2),1975)
p =
214.8585
アルゴリズム
コマンド interp1 は、MATLAB の M-ファイルです。引数
'nearest' や 'linear'
で設定される方法は、直接的な実現方法を使っています。
引数 'spline' による方法については、interp1
は、関数 ppval, mkpp, unmkpp
を使用する関数 spline
をコールします。これらのルーチンは、区分的多項式に対して機能する関数型をしています。spline
は、これらを使って、キュービックスプライン内挿を行います。よりアドバンストな手法にアクセスするには、下記の参考文献や
Spline Toolboxを参照してください。
引数 'pchip' と 'cubic'
による方法に対して、interp1 は、ベクトル x と y
を使って、区分的キュービック内挿を行う関数 pchip
をコールします。この方法は、データの型と単調さを保存できます。詳細は、pchip
のリファレンスページを参照してください。
参考
interpft, interp2, interp3, interpn, pchip, spline
参考文献
de Boor, C., A Practical Guide to Splines, Springer-Verlag, 1978.
| int8, int16, int32 | interp2 |