Main Content

interp3

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

説明

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq) は、線形内挿を使用して、特定のクエリ点における 3 つの変数の関数の内挿値を返します。結果は常に、関数の元のサンプリングを通過します。XY および Z は、サンプル点の座標を含んでいます。V は、各サンプル点の対応する関数値を含んでいます。XqYq および Zq は、クエリ点の座標を含んでいます。

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

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

Vq = interp3(V,k) は、各次元で区間の 2 分割を k 回繰り返して形成される調整後のグリッドに、内挿値を返します。この操作により、サンプル値の間に、2^k-1 個の内挿点が形成されます。

Vq = interp3(___,method) は代替内挿法として、'linear''nearest''cubic''makima' または 'spline' を指定します。既定の手法は、'linear' です。

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

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

  • 'spline' および 'makima' メソッドの場合、外挿値

  • その他の内挿法の場合、NaN

すべて折りたたむ

各次元の 10 個の点でサンプリングした、関数 flow の点と値を読み込みます。

[X,Y,Z,V] = flow(10);

関数 flow は、配列 (XYZ) 内のグリッドを返します。このグリッドは、0.1X10-3Y3-3Z3 の領域をカバーし、間隔は ΔX=0.5ΔY=0.7ΔZ=0.7 です。

ここで、X=6X=9Y=2 および Z=0 の座標におけるサンプルのボリュームを通るスライスをプロットします。

figure
slice(X,Y,Z,V,[6 9],2,0);
shading flat

Figure contains an axes object. The axes object contains 4 objects of type surface.

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

[Xq,Yq,Zq] = meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);

クエリ グリッド内の点で内挿し、同じスライス平面を使用して結果をプロットします。

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq);
figure
slice(Xq,Yq,Zq,Vq,[6 9],2,0);
shading flat

Figure contains an axes object. The axes object contains 4 objects of type surface.

各次元の 10 個の点でサンプリングした、関数 flow の点と値を読み込みます。

[X,Y,Z,V] = flow(10);

関数 flow は、配列 (XYZ) 内のグリッドを返します。このグリッドは、0.1X10-3Y3-3Z3 の領域をカバーし、間隔は ΔX=0.5ΔY=0.7ΔZ=0.7 です。

X=6X=9Y=2 および Z =0 の座標におけるサンプルのボリュームを通るスライスをプロットします。

figure
slice(X,Y,Z,V,[6 9],2,0);
shading flat

Figure contains an axes object. The axes object contains 4 objects of type surface.

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

[Xq,Yq,Zq] = meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);

'cubic' 内挿法を使用して、クエリ グリッド内の点で内挿を実行します。次に、結果をプロットします。

Vq = interp3(X,Y,Z,V,Xq,Yq,Zq,'cubic');
figure
slice(Xq,Yq,Zq,Vq,[6 9],2,0);
shading flat

Figure contains an axes object. The axes object contains 4 objects of type surface.

グリッド ベクトル xy および z を作成します。これらのベクトルは、V 内の値に関連付けられた点を定義します。

x = 1:100;
y = (1:50)';
z = 1:30;

値が 50×100×30 の乱数配列 V となるように、サンプルを定義します。配列を作成するには、関数 rand を使用します。

rng('default')
V = rand(50,100,30);

xy および z の領域の外側にある 3 つの点で V を評価します。extrapval = -1 を指定します。

xq = [0 0 0];
yq = [0 0 51];
zq = [0 101 102];
vq = interp3(x,y,z,V,xq,yq,zq,'linear',-1)
vq = 1×3

    -1    -1    -1

3 つの点はすべて、xy および z の領域の外側にあるため、-1 と評価されます。

入力引数

すべて折りたたむ

サンプル グリッド点。実数配列またはベクトルとして指定します。サンプル グリッド点は一意でなければなりません。

  • XY および Z が行列の場合、(meshgrid 形式の) フル グリッドの座標を含んでいます。XY および Z の配列を一緒に作成するには、関数 meshgrid を使用します。これらの配列は同じサイズでなければなりません。

  • XY および Z がベクトルの場合、グリッド ベクトルとして扱われます。これらのベクトルの値は厳密に単調で、増加または減少しなければなりません。

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

データ型: single | double

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

  • XY、および Z が (meshgrid 形式の) フル グリッドを表す配列の場合、V のサイズは XY、または Z のサイズと同じになります。

  • XY および Z がグリッド ベクトルの場合、size(V) = [length(Y) length(X) length(Z)] となります。

V に複素数が含まれる場合、interp3 は実数部と虚数部を個別に内挿します。

例: rand(10,10,10)

データ型: single | double
複素数のサポート: あり

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

  • XqYq および Zq がスカラーの場合、R3 における単一のクエリ点の座標になります。

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

  • XqYq および Zq が同じサイズと向きをもつベクトルの場合、XqYq および Zq は、R3 における散布点として扱われます。

  • XqYq および Zq が同じサイズの配列の場合、R3 における、クエリ点 (meshgrid 形式) または散布点のフル グリッドを表します。

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

データ型: single | double

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

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

interp3(V,1) は、interp3(V) と同じです。

次の図は、R3 の 1 平面における k=2 を示しています。赤色の内挿値が 72、黒のサンプル値が 9 つあります。

Nine sample points in a grid with three interpolated points between the sample points in each dimension

例: interp3(V,2)

データ型: single | double

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

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

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

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

  • 中程度のメモリ要求で最高速の計算

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

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

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

'makima'修正 Akima 3 次エルミート内挿。クエリ点に内挿される値は、対応する各次元における隣接するグリッド点の値を使用した、最大 3 次の多項式の区分的関数に基づいて決定されます。Akima 式はオーバーシュートを回避するよう修正されています。C1
  • 各次元に少なくとも 2 つの点が必要

  • 'spline' より少ない波形を生成

  • 計算時間は通常 'spline' より短いが、メモリの要件は同様

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

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

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

例: 5

例: 5+1i

データ型: single | double
複素数のサポート: あり

出力引数

すべて折りたたむ

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

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

i 番目の次元の長さが
2^k * (size(V,i)-1)+1 である配列

size(V) = [10 12 5]
かつ k = 3
の場合、size(Vq) = [73 89 33]

詳細

すべて折りたたむ

厳密に単調

反転せずに、常に増加または減少する一連の値。たとえば、シーケンス 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 形式の) フル グリッド

interp3 の場合、フル グリッドは 3 つの配列から構成されます。配列の要素は、R3 における領域を定義する点のグリッドを表しています。最初の配列には x 座標、2 番目の配列には y 座標、3 番目の配列には z 座標が含まれます。各配列の値は 1 つの次元に沿って変化し、それ以外の次元に沿っては一定しています。

x 配列の値は、厳密に単調で増加し、2 番目の次元に沿って変化します。y 配列の値は、厳密に単調で増加し、最初の次元に沿って変化します。z 配列の値は、厳密に単調で増加し、3 番目の次元に沿って変化します。関数 meshgrid を使用して、interp3 に渡すことができるフル グリッドを作成します。

グリッド ベクトル

interp3 の場合、グリッド ベクトルは、R3 におけるグリッド上の点を定義する、向きが混在する 3 つのベクトルから構成されます。

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

x = 1:3;
y = (4:5)';
z = 6:8;

散布点

interp3 の場合、散布点は、R3 に散在する点の集合を定義する 3 つの配列またはベクトル (XqYqZq) から構成されます。i 番目の配列には、i 番目の次元の座標が含まれています。

たとえば次のコードは、(1, 19, 10)、(6, 40, 1)、(15, 33, 22) および (0, 61, 13) の点を指定します。

Xq = [1 6; 15 0];
Yq = [19 40; 33 61];
Zq = [10 1; 22 13];

拡張機能

バージョン履歴

R2006a より前に導入