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

MATLAB surf()绘制三维曲面图详解(附带实例)

在 MATLAB 中,利用 surf() 函数可以绘制三维曲面图,其调用格式如下:
surf(X,Y,Z)          % 创建一个三维曲面图,即一个具有实色边和实色面的三维曲面
surf(X,Y,Z,C)        % 指定曲面的颜色
% 函数将矩阵Z中的值绘制为由X和Y决定的x-y平面中的网格上方的高度。曲面的颜色根据Z指定的高度而变化
surf(Z)              % 创建一个曲面图,并将Z中元素的列索引和行索引用作x坐标和y坐标
surf(Z,C)            % 指定曲面的颜色
surf(__,Name,Value)  % 使用一个或多个名称-值对指定曲面属性

在 MATLAB 中,还可以利用 surfc()、surfl() 等函数绘制三维曲面图,利用 mesh() 等函数绘制网格曲面图,曲面绘图函数如下表所示:

函数 功能 函数 功能
surfc() 绘制曲面图及其下方的等高线图 mesh() 绘制网格曲面图
surfl() 绘制具有基于颜色图的光照效果的曲面图 meshc() 绘制网格曲面图及其下方的等高线图
surface() 绘制基本曲面图 meshz() 绘制带帷幕的网格曲面图
surfnorm() 创建一个三维曲面图并显示其法线    

这些函数的调用格式与 surf() 函数的基本相同。

【实例 1】绘制球体的三维图形。在编辑器中编写以下程序并运行。
figure
[X,Y,Z]=sphere(30);  % 计算球体的三维坐标
surf(X,Y,Z);         % 绘制球体的三维图形
xlabel('x'),
ylabel('y'),
zlabel('z');
title('sphere');
运行程序后,输出如下图所示的图形:


图 1 球体的三维图形

由图 1 可以看到,球面被网格线分割成小块;每一小块可看作一块补片,嵌在线条之间。这些线条和渐变颜色可以由 shading 命令指定,其格式如下:
shading faceted % 在绘制曲面时采用分层网格线,为默认值
shading flat    % 表示平滑式颜色分布方式;去掉黑色线条,补片保持单一颜色
shading interp  % 表示插补式颜色分布方式;同样去掉线条,但补片以插值加色,计算量大
对刚绘制的曲面分别执行 shading flat和shading interp 命令,显示效果如下图所示。


图 2 不同颜色分布方式下球体的三维图形

【实例 2】绘制具有亮度(光照效果)的曲面图。在编辑器中编写以下程序并运行。
[x,y]=meshgrid(-3:0.1:3);
z=peaks(x,y);
surfl(x,y,z);
shading interp
colormap(sky)
axis([-4 4 -4 4 -8 10]);
运行程序后,输出如下图所示的图形。


图 3 具有亮度(光照效果)的曲面图

【实例 3】显示曲面图下方的等高线图。在编辑器中编写以下程序并运行。
[X,Y]=meshgrid(1:0.2:10,1:0.2:20);
Z=sin(X)+cos(Y);
colormap(sky)
surfc(X,Y,Z)
运行程序后,输出如下图所示的图形:


图 4 曲面图下方的等高线图

【实例 4】绘制网格曲面图。在编辑器中编写以下程序并运行。
colormap('default')
[X,Y]=meshgrid(-8:.5:8);
R=sqrt(X.^2+Y.^2)+eps;
Z=sin(R)./R;
C=X.*Y;
mesh(X,Y,Z,C)
colorbar
运行程序后,输出如下图所示的图形。


图 5 网格曲面图

【实例 5】绘制带帷幕的网格曲面图。在编辑器中编写以下程序并运行。
[X,Y]=meshgrid(-3:.125:3);
Z=peaks(X,Y);
C=gradient(Z);
meshz(X,Y,Z,C)
colorbar
运行程序后,输出如下图所示的图形。


图 6 带帷幕的网格曲面图

【实例 6】绘制网格曲面图示例。在编辑器中编写以下程序并运行。
[X,Y,Z]=peaks(20);
figure
subplot(2,2,1); mesh(X,Y,Z); title('(a) mesh of peaks')
subplot(2,2,2); surf(X,Y,Z); title('(b) surf of peaks')
subplot(2,2,3); meshc(X,Y,Z); title('(c) meshc of peaks')
subplot(2,2,4); meshz(X,Y,Z); title('(d) meshz of peaks')
运行程序后,输出如下图所示图形。


图 7 不同类型的网格曲面图

相关文章