Main Content

griddatan

N 次元散布データの内挿

説明

vq = griddatan(x,v,xq) は、値 v をもつサンプル点 x を式 v = f(x) の超平面で近似します。関数 griddatan は、xq で指定されたクエリ点に表面を内挿し、内挿された値 vq を返します。表面は常に、x および v によって定義されたデータ点を通過します。

vq = griddatan(x,v,xq,method) は、vq の計算に使用する内挿法を指定します。オプションは "linear" または "nearest" です。

vq = griddatan(x,v,xq,method,options) は、delaunayn を介して Qhull で使用される文字ベクトルの cell 配列 options を指定します。

すべて折りたたむ

4 次元の散布データ セットを内挿し、内挿されたデータの 3 次元の等値面を可視化します。

サンプル点の散布セットを作成します。

rng default
X = 2*rand([5000 3])-1;
Y = sum(X.^2,2);

x、y、z の各グリッドを作成してクエリ点の 3 次元セットとして使用し、これらの点に散布データを内挿します。

d = -0.8:0.05:0.8;
[y0,x0,z0] = ndgrid(d,d,d);
XI = [x0(:) y0(:) z0(:)];
YI = griddatan(X,Y,XI);

4 次元のデータ セットの可視化は難しいため、0.8 の isosurface を使用して内挿結果を可視化します。

YI = reshape(YI, size(x0));
p = patch(isosurface(x0,y0,z0,YI,0.8));
isonormals(x0,y0,z0,YI,p)
p.FaceColor = "blue";
p.EdgeColor = "none";
view(3)
axis equal
camlight
lighting phong

Figure contains an axes object. The axes object contains an object of type patch.

最近傍内挿を 3 次元の散布データ セットに使用します。

サンプルの 3 次元データ セットを作成します。行列 X は観測データの xyz の位置を含み、v は (ランダムに生成された) 観測データを含みます。このタイプのデータ セットは、たとえば、これらの位置における海水の酸素濃度を表すことができます。

rng default
X = [rand(100,1) rand(100,1) rand(100,1)];
v = rand(100,1);

最近傍内挿を使用して、いくつかのクエリ点で基となる関数の値を近似します。

[xx,yy,zz] = meshgrid(0:0.05:1);
xq = [xx(:) yy(:) zz(:)];
vq = griddatan(X,v,xq,"nearest");

サンプル点の位置の上に、結果のスライスをプロットします。

vq = reshape(vq,size(xx));
plot3(X(:,1),X(:,2),X(:,3),"r*")
hold on
slice(xx,yy,zz,vq,[0.3 0.6],0.5,0.5)
hold off

Figure contains an axes object. The axes object contains 5 objects of type line, surface. One or more of the lines displays its values using only markers

入力引数

すべて折りたたむ

サンプル点の座標。行列として指定します。xmn 列の行列として指定して、n 次元空間内の m 個の点を表します。サンプル点は一意でなければなりません。

データ型: double

サンプル値。ベクトルとして指定します。v は、x に指定された各サンプル点 (行) に対して 1 つの値をもつ、長さ m のベクトルとして指定します。

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

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

クエリ点。行列として指定します。xqpn 列の行列として指定して、n 次元空間の p 個の点を表します。xq は通常 ndgrid で生成される等間隔グリッドから作成されます。

データ型: double

内挿法。次の表の値のいずれかとして指定します。これらの手法は両方とも、入力データの Delaunay 三角形分割に基づいています。

オプション説明連続性
"linear" (既定)三角形分割に基づく線形内挿。C0
"nearest"最近傍点による内挿。不連続

method[] の場合、griddatan は既定の "linear" 法を使用します。

データ型: char | string

Qhull 固有のオプション。cell 配列として指定します。サポートされるオプションのリストについては、Qhull Quick Reference を参照してください。

options[] の場合、griddatan は次の既定のオプションを使用します。

  • 2 次元および 3 次元の内挿の場合は {'Qt' 'Qbb' 'Qc'}

  • 4 次元以上の内挿の場合は {'Qt' 'Qbb' 'Qc' 'Qx'}

options{''} の場合、関数 griddatan は既定も含めてオプションを一切使用しません。

データ型: cell

出力引数

すべて折りたたむ

内挿値。長さ p のベクトルとして返されます。vq の内挿値は、xq のクエリ点 (行) に対応します。

ヒント

  • griddatan をおよそ 6 次元より高い次元での内挿に使用することは現実的でありません。次元数と共に、基となる三角形分割に必要なメモリが指数的に増加するためです。

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

拡張機能

バージョン履歴

R2006a より前に導入