ドキュメンテーション

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

scatteredInterpolant クラス

説明

scatteredInterpolant を使用して、2 次元または 3 次元の散布データセットに対して内挿を実行します。たとえば、一連の点 (x,y) と値 vscatteredInterpolant に渡すと、v = F(x, y) 形式の表面が返されます。この表面は常に、点の位置でサンプル値を通過します。この表面を任意のクエリ点 (xq,yq) で評価し、内挿された値 vq を生成できます。

scatteredInterpolant を使用して、内挿 F を作成します。その後、次の構文のいずれかを使用して特定の点で F を評価できます。

  • Vq = F(Pq) は行列 Pq のクエリ点を指定します。Pq の各行は、クエリ点の座標を含んでいます。

  • Vq = F(Xq,Yq)Vq = F(Xq,Yq,Zq) は、等しいサイズの 2 つまたは 3 つの行列としてクエリ点を指定します。

  • Vq = F({xq,yq}) and Vq = F({xq,yq,zq})グリッド ベクトル としてクエリ点を指定します。内挿された値は Vq に返されます。この構文は、クエリする点のグリッドが大きく、メモリを節約したい場合に使用してください。

構築

F = scatteredInterpolant(x,y,v) は、v = F(x,y) 形式の表面を近似する内挿を作成します。x ベクトルと y ベクトルは、サンプル点の (x,y) 座標を指定します。v はポイント (x,y) に関連付けられたサンプル値を含むベクトルです。

F = scatteredInterpolant(x,y,z,v) は、v = F(x,y,z) という形式の 3 次元内挿を作成します。

F = scatteredInterpolant(P,v) は、サンプル点の座標を配列として指定します。P の行には、v の値の (x, y) または (x, y, z) 座標が含まれています。

F = scatteredInterpolant(___,Method) は、内挿法 ('nearest''linear' または 'natural') を指定します。先頭 3 つのいずれかの構文では、最後の入力引数として Method を指定できます。

F = scatteredInterpolant(___,Method,ExtrapolationMethod) は内挿法と外挿法の両方を指定します。Method'nearest''linear' または 'natural' にすることができます。ExtrapolationMethod'nearest''linear' または 'none' のいずれかとして指定します。先頭 3 つのいずれかの構文では、MethodExtrapolationMethod を最後の 2 つの入力引数として一緒に渡してください。

F = scatteredInterpolant() は、空の散布データの内挿を作成します。行列 P のポイントに対して F.Points = P を使って F を初期化します。行列 v の値に対して F.Values = v を使って F を初期化します。

入力引数

x

サンプル点の x 座標。v と同じサイズのベクトルとして指定します。

y

サンプル点の y 座標。v と同じサイズのベクトルとして指定します。

z

サンプル点の z 座標。v と同じサイズのベクトルとして指定します。

P

サンプル点の配列。nm 列の行列として指定します。ここで、m は点数で、n は点が存在する空間の次元です。P の各行には、サンプル点の座標 (x, y) または (x, y, z) が含まれています。

v

サンプル値。サンプル点における関数値 v = F(x,y) を定義するベクトルとして指定します。

Method

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

手法説明連続性
'linear' (既定)

線形内挿

C0
'nearest'

最近傍点による内挿。

不連続
'natural'

自然な近傍内挿

C1 (サンプル ポイントを除く)

ExtrapolationMethod

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

外挿法説明
'linear'

境界勾配に基づく線形外挿。Method'linear' または 'natural' の場合は既定です。

'nearest'

最近傍による外挿。この方法では、境界の最近傍の値を評価します。Method = 'nearest' の場合は既定です。

'none'

外挿なし。F.Points の凸包外側のクエリは NaN を返します。

プロパティ

Points

F.Values 内の値のサンプル点 (位置) の配列。F.Points の各行には、サンプル点の座標 (x, y) または (x, y, z) が含まれています。

Values

F.Points 内の各点に関連付けられた値のベクトル。

Method

データの内挿に使用される方法を指定する文字ベクトル。'nearest''linear''natural' のいずれかです。

ExtrapolationMethod

データの外挿に使用される方法を指定する文字ベクトル。'nearest''linear''none' のいずれかです。値 'none' は外挿が無効であることを示します。

定義

内挿

クエリ位置で評価できる内挿関数。

散布データ

各点間の相対的位置関係が構造的でない一連の点。

フル グリッド

一連の配列として表現されるグリッド。たとえば、ndgrid を使用してフル グリッドを作成できます。

グリッド ベクトル

ndgrid 形式のグリッドの簡潔な表現を提供する一連のベクトル。たとえば、[X,Y] = ndgrid(xg,yg) は、行列 XY にフル グリッドを返します。同じグリッドを、グリッド ベクトル xgyg を使用して表現できます。

コピーのセマンティクス

値。コピー操作に対する値クラスの影響については、MATLAB® ドキュメンテーションの「オブジェクトのコピー」を参照してください。

インデックス

scatteredInterpolant は、F のプロパティのインデックスベースの編集をサポートします。F.Points の点を追加または削除し、F.Values の対応する値を更新することができます。たとえば、F.Points(5,:) = [] は 5 番目の点を削除し、F.Values(5) = [] は対応する値を削除します。

すべて展開する

200 個の乱数点を定義します。

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

指数関数をサンプルします。これらは内挿のサンプル値です。

v = x.*exp(-x.^2-y.^2);

内挿を作成します。

F = scatteredInterpolant(x,y,v);

クエリ位置 ( $xq$, $yq$) で内挿を評価します。

ti = -2:.25:2;
[xq,yq] = meshgrid(ti,ti);
vq = F(xq,yq);

結果をプロットします。

figure
mesh(xq,yq,vq);
hold on;
plot3(x,y,v,'o');
hold off;

最近傍外挿を使用して、凸包の外側の単一点で内挿をクエリします。

200 個の乱数点による行列を定義します。

P = -2.5 + 5*gallery('uniformdata',[200 2],0);

指数関数をサンプルします。これらは内挿のサンプル値です。

x = P(:,1);
y = P(:,2);
v = x.*exp(-x.^2-y.^2);

線形内挿と最近傍外挿を指定して内挿を作成します。

F = scatteredInterpolant(P,v,'linear','nearest')
F = 

  scatteredInterpolant with properties:

                 Points: [200x2 double]
                 Values: [200x1 double]
                 Method: 'linear'
    ExtrapolationMethod: 'nearest'

凸包の外側の内挿を評価します。

vq = F(3.0,-1.5)
vq =

    0.0031

外挿を無効にして、同じ点の F を評価します。

F.ExtrapolationMethod = 'none';
vq = F(3.0,-1.5)
vq =

   NaN

サンプル点の値を変更する場合は、Values プロパティの要素を置換します。元の三角形分割は変更されないため、新しい内挿を評価すると即時に結果が得られます。

50 個の乱数点を作成します。

x = -2.5 + 5*gallery('uniformdata',[50 1],0);
y = -2.5 + 5*gallery('uniformdata',[50 1],1);

指数関数をサンプルします。これらは内挿のサンプル値です。

v = x.*exp(-x.^2-y.^2);

内挿を作成します。

F = scatteredInterpolant(x,y,v)
F = 

  scatteredInterpolant with properties:

                 Points: [50x2 double]
                 Values: [50x1 double]
                 Method: 'linear'
    ExtrapolationMethod: 'linear'

(1.40,1.90) の内挿を評価します。

F(1.40,1.90)
ans =

    0.0029

内挿のサンプル値を変更します。

vnew = x.^2 + y.^2;
F.Values = vnew;

(1.40,1.90) の内挿を評価します。

F(1.40,1.90)
ans =

    6.1109

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