双变量函数的可视化

优质
小牛编辑
128浏览
2023-12-01

要显示以下双变量函数z = f (x,y)的图像:

  • 分别对函数的定义域生成含有重复行与列的X和Y矩阵。
  • 用X和Y来计算函数的图像。

函数meshgrid把由单向量或双向量x,y指定的定义域变换成矩阵X和Y,以用于计算双变量函数。X的行和Y的列分别是x和y向量的复制。

举例-sinc函数图像

此例计算并作出sinc函数sin(r)/r的在x和y方向间的图象。R是到原点的距离,出现在矩阵中心。添加eps(在系统中返回最小值的MATLAB命令)以避免在原点处出现0/0的不定型。

    [X,Y] = meshgrid(-8:.5:8); 
    R = sqrt(X.^2 + Y.^2) + eps;
    Z = sin(R)./R;
    mesh(X,Y,Z,'EdgeColor','black')
    

在默认的情况下, MATLAB用通用流行的颜色对网孔进行着色 ,不过,这例子只使用单一的颜色着色网孔并且选定了EdgeColor 的表面属性。 查看surface参考页可以看到全部的表面属性。

可以通过把原来的隐藏线显露出来建立一个透明的网孔。

    hidden off
    

查看hidden参考页可以得到更多的关于这个操作的信息。

例子—为表面小块着色Example - Colored Surface Plots

表面小块和网孔小块的情形是相似的,除了表面小块的矩形的外观是有色的.它的颜色是由Z和colormap(colormap是一个颜色的顺序列表)的值所确定的 . 这些陈述用表面图来表示sinc函数的图像, 选择一种颜色, 然后添加颜色条使表示映射数据的图象得到颜色。

    surf(X,Y,Z)
    colormap hsv
    colorbar
    

colormap参考页以得到颜色图的信息。

带光照的表面图

光照是一种利用方向光源照亮物体的技术。在某些情况下,这技术能使表面微妙的差异更容易的看到。光照也能用来对三维的图象增加现实感。

这例子使用同前一个例子一样的表面,但是涂上了红色并且移除了网孔线。一个发光的物体被加到了"镜头"的左边(那是你从空间观看那个表面的位置)。

增加光源和设置好照明方式到phong后,使用view命令去改变视角,因而你从空间的另一个不同的点在观看表面(方位角-15和仰角65度). 最后, 用工具栏缩放方式放大外观。

    surf(X,Y,Z,'FaceColor','red','EdgeColor','none');
    camlight left; lighting phong
    view(-15,65)