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 | ![]() |