MATLAB surf()函数:绘制三维曲面图
曲面图是在网格图的基础上,在小网格之间用颜色填充而得到的图形,它的一些特性正好和网格图相反。
在曲面图里,线条是黑色的,线条之间有颜色;而在网格图里,线条之间是黑色的,线条有颜色。在曲面图里,人们不必考虑像网格图一样隐蔽线条,但要考虑用不同的方法对表面加色彩。
MATLAB 中 surf() 函数生成的是三维曲面图。它的主要调用格式及说明如下表所示。
【实例】绘制 f(x,y)=ysinx−xcosy 的三维表面图。MATLAB 程序如下:

图 1 三维表面图
【实例】绘制三维陀螺锥面。MATLAB 程序如下:

图 2 三维陀螺锥面
在曲面图里,线条是黑色的,线条之间有颜色;而在网格图里,线条之间是黑色的,线条有颜色。在曲面图里,人们不必考虑像网格图一样隐蔽线条,但要考虑用不同的方法对表面加色彩。
MATLAB 中 surf() 函数生成的是三维曲面图。它的主要调用格式及说明如下表所示。
调用格式 | 说明 |
---|---|
surf(X,Y,Z) | 绘制三维曲面图,颜色和曲面的高度相匹配。若 X 与 Y 均为向量,且 length(X)=n,length(Y)=m,而 [m,n]=size(Z),则空间中的点 xi, yi, zi 为所绘曲面网格线的交点;若 X 与 Y 均为矩阵,则空间中的点 xij, yij, zij 为所绘曲面的网格线的交点 |
surf(Z) | 创建一个网格图,并将矩阵 Z 中元素的列索引和行索引用作 x 坐标和 y 坐标 |
surf(Z,C) | 同 surf(Z),只不过颜色由 C 指定 |
surf(ax,...) | 将图形绘制到 ax 指定的坐标区中 |
surf(...,'PropertyName',PropertyValue,...) | 对指定的属性 PropertyName 设置属性值 PropertyValue,可以在同一语句中对多个属性进行设置 |
h = surf(...) | 返回图形对象句柄 |
【实例】绘制 f(x,y)=ysinx−xcosy 的三维表面图。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> [X,Y] = meshgrid(-3:.2:3); % 创建元素值介于-3~3、元素间隔为0.2的向量,并通过该向量定义二维网格 矩阵X、Y >> Z = Y.*sin(X) - X.*cos(Y); % 定义以向量X、Y为自变量的函数表达式Z >> surf(X,Y,Z) % 根据X、Y、Z绘制三维曲面 >> xlabel('x') % 对x轴、y轴、z轴进行标注,添加标签 >> ylabel('y') >> zlabel('z')运行结果如下图所示。

图 1 三维表面图
【实例】绘制三维陀螺锥面。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> t1=[0:0.1:0.9]; % 创建元素值介于0~0.9的向量t1,元素间隔为0.1 >> t2=[1:0.1:2]; % 创建元素值介于1~2的向量t2,元素间隔为0.1 >> r=[t1,-t2+2]; % 创建剖面曲线向量 r >> [X,Y,Z]=cylinder(r,30); % 基于向量r定义的剖面曲线返回圆柱的x、y和z坐标 >> surf(X,Y,Z) % 创建具有实色边和实色面的三维曲面图运行结果如下图所示。

图 2 三维陀螺锥面