このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
MATLAB®のグラフでは,x-y座標平面に引かれた四角形のグリッドの上方にある点のz座標によって表面の位置が決まります。プロットは,隣り合った点を直線で結ぶことによって作成されます。表面プロットは,数値書式で表示するには大きすぎる行列を可視化したり、2 変数の関数をグラフ化するのに有効です。
MATLABは,さまざまな表面プロットを作成できます。メッシュプロットは,定義した点を結ぶラインのみを色付けしたワイヤーフレーム表面です。表面プロットは,ラインと表面を合わせたもので,色で表示されます。次の表は,さまざまな形式を示しています。
データを表面として表せるようにデータの再構成と内挿が必要な場合は,以下の関数が役立ちます。
関数 |
用途 |
---|---|
meshgrid |
2次元および3次元の空間の四角形グリッド |
griddata |
内挿散布データ |
griddedInterpolant |
グリッドデータの内挿 |
scatteredInterpolant |
内挿散布データ |
データの内挿方法は,グリッドデータの内挿および散布データの内挿を参照してください。
网
コマンドと冲浪
コマンドは,行列データの3次元表面プロットを作成します。Z
が行列で,その要素Z (i, j)
がグリッド(i, j)
上の表面の高さを定義している場合,
网格(Z)
は,表面の色付きのワイヤーフレームビューを作成し,3次元で表示します。同様に,
冲浪(Z)
は,表面の色付き,塗りつぶし付きのビューを作成し,3次元で表示します。通常,小平面は四辺形でそれぞれが決まった色を持ち,黒で縁取りされています。しかし,コマンド阴影
により,メッシュラインの消去(阴影平
),もしくはその小平面に内挿されたシェーディングの選択(阴影插值函数
)のいずれかが可能になります。
表面オブジェクトプロパティは,表面の可視状態に関する付加的なコントロールを与えます。ユーザーは,エッジラインスタイル,頂点のマーカー,面の色付け,ライティング特性等を選択することができます。
2変数の関数,z = f (x, y
)を表示するには,関数の定義域でそれぞれ行と列が繰り返される行列X
とY
を生成します。これらの行列を使用して関数の値を求め,グラフを作成します。
関数meshgrid
は2つのベクトルx
とy
で指定された定義域を行列X
とY
に変換します。次に,これらの行列を使用して2変数関数の値を求めます。X
の行はベクトルx
のコピーで,Y
の列はベクトルy
のコピーです。
meshgrid
の使用方法を示すため,関数罪(r) / r
または関数sinc
について考えます。この関数をxとyについて,共に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
で出力される等間隔のグリッドを作成します。
プロット関数を使用して,データを表示します。
まず,[8]の範囲で不規則にサンプリングされたデータを作成し,このデータを使用して関数の値を求めます。
X = rand(100,1)*16 - 8;Y = rand(100,1)*16 - 8;r =√x。^2 + y ^2) + eps;z =罪(r)。/ r;
関数linspace
は,必要な要素数の等間隔データを作成する便利な方法です。次のステートメントは,上記の関数sinc
の例で8:。5:8 を指定した場合と同じ解像度で、乱数データの範囲を占めるベクトルを作成します。
xlin = linspace (min (x)马克斯(x), 33);ylin = linspace (min (y), max (y), 33);
(X, Y) = meshgrid (xlin ylin);
このプロセスのキーは,元のデータ点(この例ではランダムデータ)での関数値を基に,scatteredInterpolant
を使用して等間隔の点に関数値を内挿することです。次のステートメントは,新しいデータ点を作成するために,既定の線形内挿を行います。
f = scatteredInterpolant (x, y, z);Z = f (X, Y);
内挿されたデータと一様でないデータをプロットします。
图网(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つの付加的なベクトルまたは行列引数を使用して,指定したxとyのデータで表面を記述します。Z
が米行n列の行列で,x
は長さnのベクトルで,y
は長さ米のベクトルの場合,
网格(x, y, Z, C)
は,次の点で頂点が色C (i, j)
であるメッシュ表面を記述しています。
(x (j), y (i)、Z (i, j))
ここで,x
はZ
の列で,y
はZ
の行に対応します。
より一般的に,X
Y
Z
およびC
が同じ次元の行列の場合,
网格(X, Y, Z, C)
は,次の点で頂点が色C (i, j)
であるメッシュ表面を記述しています。
(X (i, j), Y (i, j)、Z (i, j))
この例は,球面座標を使用して球面を描き,信号処理のエンコード理論で使われる直交行列,アダマール行列内のプラスとマイナスのパターンを使用して,この球面を色付けします。ベクトルのθ
とφ
は,-
π≤θ
≤πと-
π/2
≤φ
≤π/2
の範囲です。θ
が行ベクトル,φ
が列ベクトルなので,行列X
,Y
,Z
を作成する乗算は,ベクトルの外積になります。
图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)轴广场