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

griddata

2 次元または 3 次元の散布データの内挿

説明

vq = griddata(x,y,v,xq,yq) は、式 v = f(x,y) の表面で、ベクトル (x,y,v) 内の散布データを近似します。関数 griddata は、(xq,yq) で指定されたクエリ点に表面を内挿し、内挿された値 vq を返します。表面は常に、x および y によって定義されたデータ点を通過します。

vq = griddata(x,y,z,v,xq,yq,zq) は、式 v = f(x,y,z) の超平面で近似します。

vq = griddata(___,method) は、前述の構文の任意の入力引数を使用し、vq の計算に使用する内挿法を指定します。method には、'linear''nearest''natural''cubic'、または 'v4' を指定できます。既定の手法は、'linear' です。

メモ

Qhull 固有のオプションはサポートされていません。コードに griddata を渡すコードのすべてのインスタンスから options 引数を削除します。

将来のリリースでは、griddata は向きが混在する入力ベクトルを一切受け入れなくなります。さらに、次の構文が削除されます。

[Xq,Yq,Vq] = griddata(x,y,v,xq,yq)
[Xq,Yq,Vq] = griddata(x,y,v,xq,yq, method)
クエリ点のグリッドを指定するには、griddata を呼び出す前に、ndgrid または meshgrid でフル グリッドを作成します。

すべて折りたたむ

クエリ点からなる等間隔グリッドにランダムな散布データを内挿します。

-2.52.5 の間のランダムな 200 点で、関数をサンプリングします。

xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
x = xy(:,1);
y = xy(:,2);
v = x.*exp(-x.^2-y.^2);

xy および v は、散在する (非等間隔) サンプル点とデータを含むベクトルです。

定間隔のグリッドを定義し、散布データをそのグリッドに内挿します。

[xq,yq] = meshgrid(-2:.2:2, -2:.2:2);
vq = griddata(x,y,v,xq,yq);

グリッド データをメッシュとしてプロットし、散布データをドットとしてプロットします。

mesh(xq,yq,vq)
hold on
plot3(x,y,v,'o')
xlim([-2.7 2.7])
ylim([-2.7 2.7])

ランダムな散布点でサンプリングされた 4 次元関数の 3 次元スライスを内挿します。

4 次元関数 v(x,y,z)-11 の間のランダムな 2500 点でサンプリングします。ベクトル xy および z には非等間隔のサンプル点が含まれます。

x = 2*rand(2500,1) - 1; 
y = 2*rand(2500,1) - 1; 
z = 2*rand(2500,1) - 1;
v = x.^2 + y.^3 - z.^4;

範囲 [-1, 1] の xy 点をもつ規則的なグリッドを定義し、z=0 を設定します。このグリッドに 2 次元クエリ点 (xq,yq,0) を内挿して、4 次元データセット (x,y,z,v) の 3 次元内挿スライス (xq,yq,0,vq) を生成します。

d = -1:0.05:1;
[xq,yq,zq] = meshgrid(d,d,0);

このグリッドに散布データを内挿します。結果をプロットします。

vq = griddata(x,y,z,v,xq,yq,zq);
plot3(x,y,v,'ro')
hold on
surf(xq,yq,vq)

griddata により提供される複数の内挿アルゴリズムの結果を比較します。

50 個の散布点のサンプル データセットを作成します。内挿法ごとの差異が鮮明になるように、点の数は人為的に少なく設定されています。

x = -3 + 6*rand(50,1);
y = -3 + 6*rand(50,1);
v = sin(x).^4 .* cos(y);

クエリ点のグリッドを作成します。

[xq,yq] = meshgrid(-3:0.1:3);

'nearest' 法、'linear' 法、'natural' 法および 'cubic' 法を使用して、サンプル データを内挿します。比較のために結果をプロットします。

z1 = griddata(x,y,v,xq,yq,'nearest');
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z1)
title('Nearest Neighbor')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

z2 = griddata(x,y,v,xq,yq,'linear');
figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z2)
title('Linear')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

z3 = griddata(x,y,v,xq,yq,'natural');
figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z3)
title('Natural Neighbor')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

z4 = griddata(x,y,v,xq,yq,'cubic');
figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,z4)
title('Cubic')
legend('Sample Points','Interpolated Surface','Location','NorthWest')

厳密解をプロットします。

figure
plot3(x,y,v,'mo')
hold on
mesh(xq,yq,sin(xq).^4 .* cos(yq))
title('Exact Solution')
legend('Sample Points','Exact Surface','Location','NorthWest')

入力引数

すべて折りたたむ

サンプル点の座標。ベクトルとして指定します。xy、および z の対応する要素は、サンプル値 v が既知の場合に、点の xyz 座標を指定します。サンプル点は一意でなければなりません。

データ型: single | double

サンプル値。ベクトルとして指定します。v のサンプル値は、xy、および z のサンプル点に対応します。

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

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

クエリ点。ベクトルまたは配列として指定します。ベクトルまたは配列内の対応する要素は、クエリ点の xyz 座標を指定します。クエリ点は、griddata が内挿を実行する位置です。

  • クエリ点のグリッドを渡す場合に配列を指定します。ndgrid または meshgrid を使用して配列を作成します。

  • 散布点の集合を渡す場合にベクトルを指定します。

指定したクエリ点は、サンプル データ点の凸包内に存在しなければなりません。griddata は凸包外にあるクエリ点に対して NaN を返します。

データ型: single | double

内挿法。次の表の手法のいずれかとして指定します。

手法説明連続性
'linear'2 次元および 3 次元の内挿をサポートする、三角形分割に基づく線形内挿 (既定値)。C0
'nearest'2 次元および 3 次元の内挿をサポートする、三角形分割に基づく最近傍内挿。不連続
'natural'2 次元および 3 次元の内挿をサポートする、三角形分割に基づく自然な近傍内挿。この方法は線形と 3 次の間の効果的なトレードオフを提供します。C1 (サンプル ポイントを除く)
'cubic'2 次元の内挿のみをサポートする、三角形分割に基づく 3 次内挿。C2
'v4'

2 次元の内挿のみをサポートする、重調和スプライン内挿 (MATLAB® 4 griddata 法)。他の方法とは異なり、この内挿法は三角形分割に基づきません。

C2

データ型: char

出力引数

すべて折りたたむ

内挿値。ベクトルまたは配列として返されます。vq のサイズは、クエリ点の入力 xqyq、および zq のサイズに依存します。

  • 2 次元内挿の場合、xq および yq はクエリ点の mn 列のグリッドを指定し、vqmn 列の配列です。

  • 3 次元内挿の場合、xqyq および zq はクエリ点の mx n x p のグリッドを指定し、vqm x n x p の配列です。

  • xqyq、(および 3 次元内挿の場合は zq) が散布点を指定するベクトルの場合、vq は同じ長さのベクトルです。

'v4' を除くすべての内挿法で、出力 vq には、サンプル データの凸包外にあるクエリ点に対する NaN 値が含まれます。'v4' メソッドは、場所に関係なくすべての点に対して同じ計算を実行します。

ヒント

  • griddata による散布データの内挿ではデータの Delaunay 三角形分割を使用するため、xy および z のスケーリング問題の影響を受けやすいことがあります。これが起きる場合は、normalize を使用してデータを再スケーリングし、結果を改善することができます。詳細については、大きさが異なるデータの正規化を参照してください。

R2006a より前に導入