ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

interp2

meshgrid 形式の 2 次元グリッド データの内挿

今後のリリースでは、interp2 はサンプルとクエリのグリッドに対して行と列のベクトルの混在した組み合わせは受け入れません。詳細およびコードの更新の推奨事項については、「Functionality being removed or changed」を参照してください。

構文

  • Vq = interp2(X,Y,V,Xq,Yq)
  • Vq = interp2(V,Xq,Yq)
  • Vq = interp2(V)
  • Vq = interp2(V,k)
  • Vq = interp2(___,method)
  • Vq = interp2(___,method,extrapval)

説明

Vq = interp2(X,Y,V,Xq,Yq) は、線形内挿を使用して、特定のクエリ点における 2 変数をもつ関数の内挿値を返します。その結果は、関数の元のサンプリングを通過します。XY には、サンプル点の座標が含まれます。V には、各サンプル点の対応する関数値が含まれます。XqYq には、クエリ点の座標が含まれます。

Vq = interp2(V,Xq,Yq) は、サンプル点の既定のグリッドを想定します。既定のグリッド点は、四角形領域 X=1:nY=1:m をカバーします。ここで [m,n] = size(V) です。この構文は、点同士の絶対距離を考慮せず、メモリを節約する場合に使用します。

Vq = interp2(V) は、各次元で 1 回ずつサンプル値の間の区間を分割して形成される調整後のグリッドに、内挿値を返します。

Vq = interp2(V,k) は、各次元で区間の分割を k 回繰り返して形成される調整後のグリッドに、内挿値を返します。

Vq = interp2(___,method) は、前述の構文のいずれかで渡すことができる、オプションの後続入力引数を指定します。method は、'linear''nearest''cubic' または 'spline' のいずれかとなり、代替の内挿法を指定します。既定の手法は、'linear' です。

Vq = interp2(___,method,extrapval) は、サンプル点の領域の外側に位置するすべてのクエリに割り当てられたスカラー値 extrapval も指定します。

サンプル点の領域の外側でクエリの extrapval 引数を省略すると、method 引数 interp2 は、次のいずれかを返します。

  • 'spline' メソッドの外挿値

  • 'spline' 以外の内挿法の NaN

すべて折りたたむ

関数 peaks を粗くサンプリングします。

[X,Y] = meshgrid(-3:3);
V = peaks(X,Y);

粗いサンプリングをプロットします。

figure
surf(X,Y,V)
title('Original Sampling');

0.25 の間隔でクエリ グリッドを作成します。

[Xq,Yq] = meshgrid(-3:0.25:3);

クエリ点で内挿します。

Vq = interp2(X,Y,V,Xq,Yq);

結果をプロットします。

figure
surf(Xq,Yq,Vq);
title('Linear Interpolation Using Finer Grid');

関数 peaks を粗くサンプリングします。

[X,Y] = meshgrid(-3:3);
V = peaks(7);

粗いサンプリングをプロットします。

figure
surf(X,Y,V)
title('Original Sampling');

0.25 の間隔でクエリ グリッドを作成します。

[Xq,Yq] = meshgrid(-3:0.25:3);

クエリ点で内挿し、3 次内挿を指定します。

Vq = interp2(X,Y,V,Xq,Yq,'cubic');

結果をプロットします。

figure
surf(Xq,Yq,Vq);
title('Cubic Interpolation Over Finer Grid');

イメージ データをワークスペースに読み込みます。

load clown

イメージの小さい領域を取り出して、single にキャストします。

V = single(X(1:124,75:225));

イメージを表示します。

figure
imagesc(V);
colormap gray
axis image
axis off
title('Original Image');

各次元で調整されるグリッドの各点の間の区間を 5 回繰り返し分割し、内挿値を挿入します。

Vq = interp2(V,5);

結果を表示します。

figure
imagesc(Vq);
colormap gray
axis image
axis off
title('Linear Interpolation');

両方の次元で、範囲 [-2, 2] で関数を粗くサンプリングします。

[X,Y] = meshgrid(-2:0.75:2);
R = sqrt(X.^2 + Y.^2)+ eps;
V = sin(R)./(R);

粗いサンプリングをプロットします。

figure
surf(X,Y,V)
xlim([-4 4])
ylim([-4 4])
title('Original Sampling')

XY の領域を越えるクエリ グリッドを作成します。

[Xq,Yq] = meshgrid(-3:0.2:3);

XY の領域内で 3 次内挿を実行し、範囲外に位置するすべてのクエリに 0 を割り当てます。

Vq = interp2(X,Y,V,Xq,Yq,'cubic',0);

結果をプロットします。

figure
surf(Xq,Yq,Vq)
title('Cubic Interpolation with Vq=0 Outside Domain of X and Y');

入力引数

すべて折りたたむ

サンプル グリッド点。実数行列またはベクトルとして指定します。

例: [X,Y] = meshgrid(1:30,-10:10)

データ型: single | double

サンプル値。実数行列または複素数行列として指定します。V のサイズ要件は、XY のサイズによって異なります。

  • XY が (meshgrid 形式の) フル グリッドを表す行列の場合、VX および Y と同じサイズでなければなりません。

  • XY がグリッド ベクトルの場合、V は、length(Y) 行と length(X) 列を含む行列でなければなりません。

例: rand(10,10)

データ型: single | double
複素数のサポート: はい

クエリ点。実数のスカラー、ベクトル、行列または配列として指定します。

  • XqYq がスカラーの場合、単一のクエリ点の座標になります。

  • XqYq が異なる向きのベクトルの場合、XqYq はグリッド ベクトルとして扱われます。

  • XqYq が、サイズと向きが同じベクトルの場合、XqYq は 2 次元空間の散布点として扱われます。

  • XqYq が行列の場合、これらはクエリ点 (meshgrid 形式) または散布点のフル グリッドを表します。

  • XqYq が N 次元配列の場合、2 次元空間内の散布点を表します。

例: [Xq,Yq] = meshgrid((1:0.1:10),(-5:0.1:0))

データ型: single | double

調整係数。実数の非負のスカラー整数として指定します。この値は、各次元で調整されるグリッドの区間を分割する繰り返し回数を指定します。この操作により、サンプル値の間に、2^k-1 個の内挿点が形成されます。

k0 の場合、VqV と同じになります。

interp2(V,1)interp2(V) と同じ結果になります。

次の図は、k=2 の 9 つのサンプル値 (黒) 間での内挿値 (赤) の配置を示しています。

例: interp2(V,2)

データ型: single | double

内挿法。次の表からオプションとして指定します。

メソッド説明連続性コメント
'linear'クエリ点に内挿される値は、対応する各次元における、隣接するグリッド点の値を使用した線形内挿に基づいて決定されます。これは既定の内挿法です。C0
  • 各次元に少なくとも 2 つのグリッド点が必要

  • 'nearest' よりも多いメモリが必要

'nearest'クエリ点に内挿される値は、最も近いサンプル グリッド点の値になります。 不連続
  • 各次元に 2 つのグリッド点が必要

  • 中程度のメモリで最速の計算が必要

'cubic'クエリ点に内挿される値は、個々の次元で隣接するグリッド点の値の 3 次内挿に基づいて決定されます。内挿は、3 次たたみ込みに基づいて決定されます。C1
  • 各次元でグリッドが等間隔でなければならない。ただし、すべての次元で間隔が同じである必要はありません。

  • 各次元に少なくとも 4 つの点が必要

  • 'linear' よりも多くのメモリと長い計算時間が必要

'spline'クエリ点に内挿される値は、個々の次元で隣接するグリッド点の値の 3 次内挿に基づいて決定されます。内挿は節点なし端点条件を使用した 3 次スプラインに基づいています。C2
  • 各次元に 4 つの点が必要

  • 'cubic' よりも多くのメモリと長い計算時間が必要

XY の領域の外側の関数値。実数または複素数のスカラーとして指定します。interp2 は、XY の領域の外側のすべての点に対して、この定数値を返します。

例: 5

例: 5+1i

データ型: single | double
複素数のサポート: はい

出力引数

すべて折りたたむ

内挿値。実数または複素数のスカラー、ベクトルまたは行列として返されます。Vq のサイズと形状は、使用する構文、場合によっては入力引数のサイズと値によって異なることがあります。

構文特殊な条件Vq のサイズ
interp2(X,Y,V,Xq,Yq)
interp2(V,Xq,Yq)
と、method または extrapval を含む上記構文のバリエーション
XqYq はスカラースカラーXqYq をスカラーとして渡した場合は size(Vq) = [1 1]
上記に同じXqYq は、サイズと向きが同じベクトルXq および Yq と同じサイズと向きをもつベクトルsize(Xq) = [100 1]
かつ size(Yq) = [100 1] の場合、
size(Vq) = [100 1]
上記に同じXqYq は、向きが混在するベクトル行の数が length(Yq) で、列の数が length(Xq) の行列size(Xq) = [1 100]
かつ size(Yq) = [50 1] の場合、
size(Vq) = [50 100]
上記に同じXqYq は、同じサイズの行列または配列Xq および Yq と同じサイズの行列または配列size(Xq) = [50 25]
かつ size(Yq) = [50 25] の場合、
size(Vq) = [50 25]
interp2(V,k)
と、method または extrapval を含む上記構文のバリエーション
なし

行の数が
2^k * (size(V,1)-1)+1

列の数が
2^k * (size(V,2)-1)+1 の行列

size(V) = [10 20]
かつ k = 2 の場合、
size(Vq) = [37 77]

詳細

すべて折りたたむ

厳密に単調

反転せずに、常に増加または減少する一連の値。たとえば、シーケンス a = [2 4 6 8] は厳密に単調で増加します。シーケンス b = [2 4 4 6 8] は、b(2)b(3) の間の値に変化がないため、厳密に単調ではありません。シーケンス c = [2 4 6 8 6] には c(4)c(5) の間に反転が含まれているため、単調ではありません。

(meshgrid 形式の) フル グリッド

interp2 の場合、フル グリッドは、要素が四角形領域の点のグリッドを表す行列のペアです。1 つの行列には x 座標、もう 1 つの行列には y 座標が含まれます。x 行列の値は、厳密に単調で、行に沿って増加します。列に沿った値は定数です。y 行列の値は厳密に単調で、列に沿って増加します。行に沿った値は定数です。関数 meshgrid を使用して、interp2 に渡すことができるフル グリッドを作成します。

たとえば、次のコードは –1 ≤ x ≤ 3 かつ 1 ≤ y ≤ 4 の領域に対するフル グリッドを作成します。

[X,Y] = meshgrid(-1:3,(1:4))
X =

    -1     0     1     2     3
    -1     0     1     2     3
    -1     0     1     2     3
    -1     0     1     2     3

Y =

     1     1     1     1     1
     2     2     2     2     2
     3     3     3     3     3
     4     4     4     4     4

グリッド ベクトル

interp2 の場合、グリッド ベクトルは、グリッド内の x 座標と y 座標を定義する、向きが混在するベクトルのペアから構成されます。1 つのベクトルは行ベクトル、もう 1 つのベクトルは列ベクトルです。

たとえば、次のコードは –1 ≤ x ≤ 3 かつ 1 ≤ y ≤ 4 の領域を指定するグリッド ベクトルを作成します。

x = -1:3;
y = (1:4)';

散布点

interp2 の場合、散布点は、2 次元空間に散在する点の集合を定義する配列のペアから構成されます。1 つの配列には x 座標、もう 1 つの配列には y 座標が含まれます。

たとえば、次のコードは (2,7)、(5,3)、(4,1) および (10,9) の点を指定します。

x = [2 5; 4 10];
y = [7 3; 1 9];

R2006a より前に導入

この情報は役に立ちましたか?