| 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を参照してください。
| メッシュとサーフェスプロット | 一様に分布していないデータのサーフェスプロット |