3-D Visualization | ![]() ![]() |
2変数関数の可視化
2変数関数z = f(x,y)を表示する最初のステップは、関数の領域に渡り、行と列を繰り返し使って、行列X
と Y
を生成することです。そして、この行列を使って、関数を計算し、グラフ表示します。
関数 meshgrid
は、2つのベクトルx
と y
で指定された領域を、行列X
と Y
に変換します。そして、これらの行列を使って、2変数関数を計算します。X
の行は、ベクトルx
をコピーし、Y
の列は、ベクトルy
をコピーしたものです。
meshgrid
の使用を示すため、sin(r)/r
、または、sinc
関数を考えましょう。この関数を、x
と yについて、共に、-8から8までの範囲で、関数を計算するために、ユーザは、一つのベクトル引数のみをmeshgrid
に渡す必要があります。そして、それを両方向で使用します。
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps;
行列R
は、行列の中心、原点からの距離です。eps
を加えることは、データの中にInf
値を生成する、ゼロ割を防ぐためのものです。
関数sinc
を型作り、 mesh
を使って、Z
をプロットしたものが、3次元サーフェスになります。
Z = sin(R)./R; mesh(Z)
MATLAB
は、ユーザのグラフの情報を強調する種々の技法を用意しています。たとえば、関数sinc
のグラフは、前のグラフと同じデータを使っていますが、ライティングとビューの調整を使って、グラフ化された関数の型を強調することができます(daspect
,
axis
, camlight
, view
)。
surf(X,Y,Z,'FaceColor','interp',... 'EdgeColor','none',... 'FaceLighting','phong') daspect([5 5 1]) axis tight view(-50,30) camlight left
サーフェスプロットの詳細については、関数surf
を参照してください。
![]() |
メッシュとサーフェスプロット | 一様に分布していないデータのサーフェスプロット | ![]() |