首页 > 编程笔记 > MATLAB笔记 阅读:47

MATLAB surf()函数:绘制三维曲面图

曲面图是在网格图的基础上,在小网格之间用颜色填充而得到的图形,它的一些特性正好和网格图相反。

在曲面图里,线条是黑色的,线条之间有颜色;而在网格图里,线条之间是黑色的,线条有颜色。在曲面图里,人们不必考虑像网格图一样隐蔽线条,但要考虑用不同的方法对表面加色彩。

MATLAB 中 surf() 函数生成的是三维曲面图。它的主要调用格式及说明如下表所示。

表 1 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 三维陀螺锥面

相关文章