主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

データを表面として表す

データグリッドをプロットする関数

MATLAB®のグラフでは,x-y座標平面に引かれた四角形のグリッドの上方にある点のz座標によって表面の位置が決まります。プロットは,隣り合った点を直線で結ぶことによって作成されます。表面プロットは,数値書式で表示するには大きすぎる行列を可視化したり、2 変数の関数をグラフ化するのに有効です。

MATLABは,さまざまな表面プロットを作成できます。メッシュプロットは,定義した点を結ぶラインのみを色付けしたワイヤーフレーム表面です。表面プロットは,ラインと表面を合わせたもので,色で表示されます。次の表は,さまざまな形式を示しています。

関数

用途

冲浪

表面プロット

meshcsurfc

等高線図が下にある表面プロット

meshz

カーテンプロット(基準平面)をもつ表面プロット

pcolor

平面プロット(値が色のみに比例する)

surfl

指定した方向からライティングされた表面プロット

表面

表面グラフィックスオブジェクトを作成するための低水準関数(高水準関数のベース)

データのグリッド化と内挿のための関数

データを表面として表せるようにデータの再構成と内挿が必要な場合は,以下の関数が役立ちます。

関数

用途

meshgrid

2次元および3次元の空間の四角形グリッド

griddata

内挿散布データ

griddedInterpolant

グリッドデータの内挿

scatteredInterpolant

内挿散布データ

データの内挿方法は,グリッドデータの内挿および散布データの内挿を参照してください。

メッシュプロットと表面プロット

コマンドと冲浪コマンドは,行列データの3次元表面プロットを作成します。Zが行列で,その要素Z (i, j)がグリッド(i, j)上の表面の高さを定義している場合,

网格(Z)

は,表面の色付きのワイヤーフレームビューを作成し,3次元で表示します。同様に,

冲浪(Z)

は,表面の色付き,塗りつぶし付きのビューを作成し,3次元で表示します。通常,小平面は四辺形でそれぞれが決まった色を持ち,黒で縁取りされています。しかし,コマンド阴影により,メッシュラインの消去(阴影平),もしくはその小平面に内挿されたシェーディングの選択(阴影插值函数)のいずれかが可能になります。

表面オブジェクトプロパティは,表面の可視状態に関する付加的なコントロールを与えます。ユーザーは,エッジラインスタイル,頂点のマーカー,面の色付け,ライティング特性等を選択することができます。

2変数関数の可視化

  1. 2変数の関数,z = f (x, y)を表示するには,関数の定義域でそれぞれ行と列が繰り返される行列XYを生成します。これらの行列を使用して関数の値を求め,グラフを作成します。

  2. 関数meshgridは2つのベクトルxyで指定された定義域を行列XYに変換します。次に,これらの行列を使用して2変数関数の値を求めます。Xの行はベクトルxのコピーで,Yの列はベクトルyのコピーです。

例1例:関数meshgridの使用

meshgridの使用方法を示すため,関数罪(r) / rまたは関数sincについて考えます。この関数をxyについて,共に8 ~ 8の範囲で,関数計算するために,ユーザーは1つのベクトル引数のみをmeshgridに渡す必要があります。

(X, Y) = meshgrid (8: .5:8);R =√X。^2 + y ^2) + eps;

行列Rは,行列の中心,すなわち原点からの距離です。每股收益を追加することで(次のステップで)ゼロ除算によってデータ内に値が生成されるのを防ぎます。

関数sincを作成し,Zをプロットしたものが3次元表面になります。

Z =罪(R)。/ R;图网(X, Y, Z)

隠されたラインの削除

既定の設定では,MATLABはメッシュプロット内で視点から隠れるラインを削除します。これはプロット面が塗りつぶしされていない場合でも削除します。ラインの削除を行わない場合や,メッシュプロットの面を透明にするには,隐藏的コマンドを使用します。

隐藏的

表面の形状の強調

MATLABは,ユーザーのグラフの情報を強調するさまざまな技法を提供しています。たとえば,関数sincのグラフは,前のグラフと同じデータを使用していますが,ライティングとビューの調整と異なるカラーマップを使用して,グラフ化された関数(daspect视图camlight)の形状を強調することができます。

figure colormap hsv surf(X,Y,Z,'FaceColor','interp',…‘EdgeColor’,‘没有’,……'FaceLighting','gouraud') daspect([5 5 1]) axis tight view(-50,30) camlight left

表面プロットの詳細については,関数冲浪を参照してください。

一様に分布していないデータの表面プロット

meshgridを使用して,一様分布するサンプルデータ点のグリッドを作成し,関数sincを計算し,グラフ化します。そして,MATLABは隣り合った行列要素を結合することにより,表面プロットを作成し,四辺形のメッシュを作成します。

一様に分布していないサンプルデータから表面プロットを作成するには,まずscatteredInterpolantを使用して,一様分布になるように値を内挿し,その後通常どおりに冲浪を使用します。

例——一様でないデータを表面に表示する

この例では,指定した範囲のランダムな点で関数sincを計算し,表面プロットとして表示するための一様分布のサンプルデータを作成します。このプロセスは,以下の手順を含んでいます。

  • linspaceを使用して,一様に分布していないサンプルデータの占める範囲に対して,等間隔に分布する値を作成します。

  • meshgridを使用して,linspaceの出力をベースにプロットに必要なグリッドを作成します。

  • scatteredInterpolantを使用して,不規則にサンプリングされたデータにデータを内挿して,meshgridで出力される等間隔のグリッドを作成します。

  • プロット関数を使用して,データを表示します。

  1. まず,[8]の範囲で不規則にサンプリングされたデータを作成し,このデータを使用して関数の値を求めます。

    X = rand(100,1)*16 - 8;Y = rand(100,1)*16 - 8;r =√x。^2 + y ^2) + eps;z =罪(r)。/ r;
  2. 関数linspaceは,必要な要素数の等間隔データを作成する便利な方法です。次のステートメントは,上記の関数sincの例で8:。5:8 を指定した場合と同じ解像度で、乱数データの範囲を占めるベクトルを作成します。

    xlin = linspace (min (x)马克斯(x), 33);ylin = linspace (min (y), max (y), 33);
  3. 次に,これらの点を使用して,等間隔のグリッドを作成します。

    (X, Y) = meshgrid (xlin ylin);
  4. このプロセスのキーは,元のデータ点(この例ではランダムデータ)での関数値を基に,scatteredInterpolantを使用して等間隔の点に関数値を内挿することです。次のステートメントは,新しいデータ点を作成するために,既定の線形内挿を行います。

    f = scatteredInterpolant (x, y, z);Z = f (X, Y);
  5. 内挿されたデータと一様でないデータをプロットします。

    图网(X, Y, Z)%以内插值替换的;持有plot3 (x, y, z,“。”“MarkerSize”15)%不均匀

データの形状の変更

次のような3要素(X, Y, Z)をもつデータの集合体があるとします。

X Y Z
1 1 152
2 1 89
3. 1 One hundred.
4 1 One hundred.
5 1 One hundred.
1 2 103
2 2 0
3. 2 One hundred.
4 2 One hundred.
5 2 One hundred.
1 3. 89
2 3. 13
3. 3. One hundred.
4 3. One hundred.
5 3. One hundred.
1 4 115
2 4 One hundred.
3. 4 187
4 4 200
5 4 111
1 5 One hundred.
2 5 85
3. 5 111
4 5 97
5 5 48

冲浪轮廓stem3などのさまざまなMATLABグラフタイプを使用すると,データをベクトル形式で表すことができます。これを行うには,まずデータを再構成します。(X, Y)の値を使用して,Z値が含まれるxy平面の座標を定義します。関数重塑および转置を使用すると3つの要素(X, Y, Z)によって四角形グリッドが作成されるようにデータを再構成できます。

x =重塑(x 5 5) ';y =重塑(y, 5、5)';z =重塑(z, 5、5)';

形状の変更によって,5行5列の配列が3つ得られます。

x = 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 y = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 z = 152 89 100 100 100 103 0 100 100 100 89 100 100 100 115 100 187 200 111 100 85 111 97 48

これでXとYに対するZの値を表すことができます。たとえば,以下のように3次元ステムグラフを作成できます。

stem3 (x, y, z,“MarkerFaceColor”‘g’

パラメトリックな表面

表面を描画する関数は,2つの付加的なベクトルまたは行列引数を使用して,指定したxyのデータで表面を記述します。Zn列の行列で,xは長さnのベクトルで,yは長さのベクトルの場合,

网格(x, y, Z, C)

は,次の点で頂点が色C (i, j)であるメッシュ表面を記述しています。

(x (j), y (i)、Z (i, j))

ここで,xZの列で,yZの行に対応します。

より一般的に,XYZおよびCが同じ次元の行列の場合,

网格(X, Y, Z, C)

は,次の点で頂点が色C (i, j)であるメッシュ表面を記述しています。

(X (i, j), Y (i, j)、Z (i, j))

この例は,球面座標を使用して球面を描き,信号処理のエンコード理論で使われる直交行列,アダマール行列内のプラスとマイナスのパターンを使用して,この球面を色付けします。ベクトルのθφは,-π≤θ≤πと-π/2φ≤π/2の範囲です。θが行ベクトル,φが列ベクトルなので,行列XYZを作成する乗算は,ベクトルの外積になります。

图k = 5;n = 2 ^ k - 1;θ=π* (- n: 2: n) / n;φ=(π/ 2)* (- n: 2: n) / n;X = cos(φ)* cos(θ);Y = cos(φ)* sin(θ);Z =罪(φ)*的(大小(θ));C = hadamard(2^k);冲浪(X, Y, Z, C)轴广场