news 2026/8/29 10:19:52

MATLAB三维绘图从入门到精通:mesh、surf、plot3核心函数详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MATLAB三维绘图从入门到精通:mesh、surf、plot3核心函数详解

1. 从二维到三维:为什么我们需要MATLAB三维绘图

如果你已经能用MATLAB熟练地画折线图、散点图、柱状图,那么恭喜你,你已经掌握了数据可视化的基础。但很多时候,我们面对的数据关系远比二维平面复杂。想象一下,你正在处理一个物理实验数据,需要同时观察温度、压力和体积三个变量之间的关系;或者你在分析一个地理信息系统,需要展示地形高程随经纬度的变化;又或者你在优化一个工程问题,目标函数依赖于两个独立的决策变量。在这些场景下,二维图就显得力不从心了,它无法直观地呈现“第三个维度”的信息。

这就是三维绘图的价值所在。它不仅仅是让图表看起来更酷炫,其核心在于揭示数据的内在结构和多维关系。一个精心绘制的三维曲面或散点云,能让你一眼看出数据的峰值、谷值、趋势以及变量间的交互作用,这是任何二维投影或切片图都难以替代的直观体验。在数学建模竞赛中,无论是呈现复杂的模型输出(如多元函数图像),还是展示高维数据的降维或聚类结果,三维可视化都是提升论文表现力和说服力的利器。

MATLAB作为科学计算领域的标杆工具,其三维绘图功能强大且体系完整。从最基本的网格曲面到带光照渲染的精细模型,从静态展示到动态旋转,它提供了一整套从“画出来”到“画得好”的解决方案。很多人觉得三维图难,往往是因为对meshsurfplot3这一系列函数感到混淆,或者对数据网格化(Meshgrid)这个关键预处理步骤理解不透。别担心,接下来我们就从最核心、最易上手的三类基础图形开始,彻底讲清楚它们的原理、差异和适用场景,让你不仅能画出图,更能理解为什么这么画,以及如何画出最能表达你意图的图。

2. 三维绘图基石:理解网格数据与meshgrid函数

在画三维曲面之前,有一个无法绕开的步骤:创建网格数据。这是三维绘图与二维绘图最根本的区别,也是新手最容易卡住的地方。我们得先把这个概念掰开揉碎了讲明白。

为什么需要网格化?在二维图中,我们画y = f(x),给出一系列x坐标,计算出对应的y坐标,然后plot(x, y)连线即可。这里的xy都是一维向量。但在三维曲面z = f(x, y)中,对于每一个(x, y)坐标对,都有一个z值。如果我们还像二维那样,只给两个一维向量XY,MATLAB是无法知道如何将它们两两配对去计算z的。

meshgrid的魔法meshgrid函数的作用,正是将两个一维向量xy,扩展成两个二维矩阵XY。这个过程可以理解为“张网”:

  • 你定义x方向上的采样点(比如x = 1:0.5:3)。
  • 你定义y方向上的采样点(比如y = 2:0.5:4)。
  • [X, Y] = meshgrid(x, y)会生成两个矩阵:
    • X矩阵:每一都是相同的x向量。
    • Y矩阵:每一都是相同的y向量。

这样,X(i,j)Y(i,j)就唯一地确定了平面上的一个点的横纵坐标。然后,你就可以用这个坐标对去计算高度Z(i,j) = f(X(i,j), Y(i,j))。最终,X,Y,Z三个维度大小相同的矩阵,共同定义了一个三维曲面上的所有点。

一个具体的类比想象一个渔网。x向量定义了从左到右有多少根竖着的经线(以及它们的位置),y向量定义了从下到上有多少根横着的纬线。meshgrid的作用就是把这张网的每一个交叉点的坐标(经线位置, 纬线位置)都计算出来,记录在XY矩阵里。Z矩阵则记录了每个交叉点处的水深(或高度)。有了这张“坐标网”和“水深表”,MATLAB就能把这张三维的“渔网曲面”给编织出来了。

实操与核心代码

% 定义自变量范围 x = linspace(-2, 2, 40); % 在-2到2之间生成40个点 y = linspace(-2, 2, 40); % 同理 % 生成网格坐标矩阵 [X, Y] = meshgrid(x, y); % 计算曲面高度,例如一个鞍面函数 Z = X.^2 - Y.^2; % 注意:这里用的是 .^(点乘方),是对矩阵中每个元素单独操作 % 如果写成 X^2 - Y^2,MATLAB会尝试做矩阵乘法,会报错维度不符

提示:linspace(a, b, n)a:step:b更常用在绘图里,因为它能精确控制生成的点数n,从而控制图形的精细度。点数太少,曲面会显得棱角分明;点数太多,计算和渲染会变慢。对于初学,40-50个点是个不错的平衡。

理解并熟练运用meshgrid,是开启MATLAB三维绘图大门的钥匙。接下来,我们将用刚刚生成的X, Y, Z数据,来探索三种最基础的绘图函数。

3. 核心函数拆解一:网状图mesh与曲面图surf的抉择

拿到网格数据[X, Y, Z]后,最常用的两个绘图命令是meshsurf。它们看起来相似,但内核逻辑和适用场景有显著区别。选对工具,你的图形表达效率会提升一倍。

3.1mesh:聚焦于结构与框架

mesh函数绘制的是网格线图。它只绘制曲面上经纬线交叉构成的网格,网格之间的面是透明的。你可以把它想象成一个用铁丝编织而成的曲面模型。

图形特性与代码实现

figure(1) % 创建图形窗口1 mesh(X, Y, Z) title(‘Mesh Plot of Z = x^2 - y^2’) xlabel(‘X axis’) ylabel(‘Y axis’) zlabel(‘Z axis’) colorbar % 显示颜色条,颜色代表Z值高低

运行这段代码,你会看到一个由彩色线条构成的鞍面。线条的颜色随着Z值变化(默认是‘jet’色谱),这使得在观察曲面起伏时,即使没有填充面,也能通过颜色感知高度。

为什么选择mesh

  1. 强调数据结构和拓扑关系:当你的关注点在于曲面的“骨架”和转折点,或者需要透过曲面看到背面的结构时,mesh是首选。例如,在分析数学函数的临界点、鞍点时,网格线能清晰勾勒出曲面的走向。
  2. 绘制数据稀疏的曲面:如果数据点本身比较稀疏,用surf填充会得到很多大块的色斑,反而模糊细节。mesh能保留数据的离散感。
  3. 需要与下层图形叠加时:由于其透明特性,可以在一个mesh图上方再绘制其他图形(如重要的散点),而不会完全被遮挡。

一个关键技巧:hidden off默认情况下,MATLAB会对mesh图进行“消隐”处理,即自动隐藏被前面部分挡住的网格线,这符合视觉习惯。但有时,为了分析需要,我们希望看到完整的、未被遮挡的网格。这时可以使用hidden off命令。

mesh(X, Y, Z) hidden off

试试看,你会发现原本被挡住的“铁丝”也都显示出来了,整个图形变成一个透明的线框。这在检查复杂曲面背面结构时非常有用。

3.2surf:侧重于表面与形态

surf函数绘制的是表面图。它不仅绘制网格线,还用颜色填充了网格之间的每一个小面。你可以把它想象成一个蒙上了彩色塑料皮的曲面模型。

图形特性与代码实现

figure(2) % 创建图形窗口2 surf(X, Y, Z) title(‘Surface Plot of Z = x^2 - y^2’) xlabel(‘X axis’) ylabel(‘Y axis’) zlabel(‘Z axis’) colorbar

运行后,你会看到一个实心的、有连续颜色过渡的鞍面。视觉效果比mesh更饱满、更真实。

为什么选择surf

  1. 直观展示连续变化趋势:填充的颜色能形成连续、平滑的视觉过渡,非常适合展示高度、温度、密度等连续场变量的分布。读者一眼就能看出哪里是“山峰”(暖色),哪里是“山谷”(冷色)。
  2. 追求更强的视觉冲击力和美观度:在论文或报告需要展示最终效果图时,surf图通常更受欢迎。结合光照、材质等渲染效果(后续会讲),可以做出非常精美的插图。
  3. 表示物理实体表面:当绘制的是实际物体的表面,如地形、机械零件、流体界面时,surf的实体感更符合认知。

surf的核心属性:EdgeColorFaceColorsurf的强大在于其高度的可定制性,主要通过两个属性控制:

  • EdgeColor:控制网格线的颜色。
  • FaceColor:控制表面填充的颜色。
figure(3) subplot(2,2,1) surf(X, Y, Z) % 默认:面着色,边黑色 title(‘Default’) subplot(2,2,2) surf(X, Y, Z, ‘EdgeColor’, ‘none’) % 去掉网格线,纯色面 title(‘EdgeColor: none’) subplot(2,2,3) surf(X, Y, Z, ‘FaceColor’, ‘interp’, ‘EdgeColor’, ‘none’) % 面颜色插值,更平滑 title(‘FaceColor: interp’) subplot(2,2,4) surf(X, Y, Z, ‘FaceColor’, ‘flat’, ‘EdgeColor’, ‘k’) % 面按网格块着色,边黑色 title(‘FaceColor: flat’)
  • ‘interp’:在网格顶点颜色之间进行双线性插值,产生非常平滑的渐变效果,最适合表现连续场。
  • ‘flat’:每个网格小面使用统一的颜色(由该面某个顶点的颜色决定),会有微弱的块状感,但计算更快。
  • ‘none’:不填充面颜色,此时surf退化为类似mesh但无消隐的线框(不常用)。

3.3meshvssurf:实战场景选择指南

为了让你彻底分清该用谁,我们来看几个具体场景:

场景描述推荐函数理由与配置建议
分析一个优化问题的目标函数地形,寻找极值点meshsurf(X,Y,Z,‘EdgeColor’,‘k’)网格线能清晰显示函数曲面的“沟壑”与“山脊”,便于视觉定位极值点所在区域。
绘制地理高程数据(DEM),制作地形图surf, 且FaceColor设为‘texturemap’或配合demcmap使用专业地形色图实体表面能真实反映地形起伏。使用地理学专用的色图(如demcmap)能让高程分层更符合专业规范。
展示流体模拟中某个截面的温度云图surf, 且‘EdgeColor’, ‘none’, ‘FaceColor’, ‘interp’需要完全平滑的颜色过渡来表现温度的连续分布,任何网格线都是干扰。
绘制一个稀疏测量点插值后的曲面,想同时看到原始数据点meshmesh画出插值曲面,保持透明。然后用plot3scatter3在同一个图上叠加绘制原始测量散点。这样散点不会被遮挡。
需要旋转图形并从各个角度观察内部结构mesh或配合hidden off透明或线框模式便于洞察复杂结构的内部关系。

注意:无论mesh还是surf,它们绘制的前提都是数据必须已经网格化成矩阵形式X, Y, Z。这是和接下来要讲的plot3最本质的区别。

4. 核心函数拆解二:三维空间中的“画笔”plot3

如果说meshsurf是用于绘制“面”的,那么plot3就是用于绘制三维空间中的“线”和“点”的。它是二维plot函数在三维空间的自然延伸,语法也极其相似。

基本语法与理解plot3的核心语法是plot3(X, Y, Z)。这里的X, Y, Z三个长度相同的一维向量,而不是矩阵。它按照向量元素的顺序,将点(X(i), Y(i), Z(i))在三维空间中依次连接起来,形成一条空间曲线。

典型应用场景一:参数方程曲线这是plot3最经典的应用。当一条曲线无法用z=f(x,y)显式表示,但可以用参数t描述时,plot3大显身手。

figure(4) t = linspace(0, 10*pi, 1000); % 参数t, 生成1000个点使曲线光滑 x = sin(t); y = cos(t); z = t / (5*pi); % 让z随t线性增长,形成螺旋上升效果 plot3(x, y, z, ‘b-’, ‘LineWidth’, 2) % ‘b-‘蓝色实线,线宽2 title(‘3D Helix: A Parametric Curve’) xlabel(‘X’) ylabel(‘Y’) zlabel(‘Z’) grid on % 显示三维网格,有助于空间定位 axis equal % 三个坐标轴等比例缩放,防止图形被压扁或拉长

这段代码画出了一个三维螺旋线。通过axis equal,我们能确保看到的是一个“正”的螺旋,而不是被拉伸的弹簧。

典型应用场景二:空间折线与数据路径在机器人轨迹规划、飞行器航迹、分子动力学模拟中,我们常常得到一系列按时间顺序排列的空间坐标点。plot3可以直观地将其连接成运动轨迹。

% 模拟一段随机游走轨迹 num_points = 50; X_path = cumsum(randn(num_points, 1)); % 随机游走的X坐标 Y_path = cumsum(randn(num_points, 1)); % 随机游走的Y坐标 Z_path = linspace(0, 10, num_points)‘; % Z坐标匀速上升 figure(5) plot3(X_path, Y_path, Z_path, ‘ro-’) % ‘ro-‘ 红色圆圈标记并用线连接 hold on % 保持当前图形,以便叠加绘制 % 标记起点和终点 plot3(X_path(1), Y_path(1), Z_path(1), ‘g^’, ‘MarkerSize’, 12, ‘MarkerFaceColor’, ‘g’) plot3(X_path(end), Y_path(end), Z_path(end), ‘bs’, ‘MarkerSize’, 12, ‘MarkerFaceColor’, ‘b’) hold off title(‘3D Trajectory with Start/End Points’) legend(‘Trajectory’, ‘Start’, ‘End’, ‘Location’, ‘best’) grid on

plot3mesh/surf的混合绘图技巧在实际建模中,我们经常需要将空间曲线与曲面结合起来展示。例如,在曲面上画出一条最优路径,或者标注出极值点。

% 沿用之前的鞍面数据 X, Y, Z figure(6) surf(X, Y, Z, ‘FaceAlpha’, 0.7, ‘EdgeColor’, ‘none’) % FaceAlpha控制面透明度 hold on % 在鞍面上定义一条空间曲线,例如沿 x=y 这条线 t_line = linspace(-2, 2, 100); x_line = t_line; y_line = t_line; z_line = x_line.^2 - y_line.^2; % 在鞍面函数上,当x=y时,z恒为0 plot3(x_line, y_line, z_line, ‘r-’, ‘LineWidth’, 3) % 标记一个特定点,比如 (1, 1, 0) plot3(1, 1, 0, ‘yo’, ‘MarkerSize’, 15, ‘MarkerFaceColor’, ‘y’) hold off title(‘Surface with an Overlaid Curve and Point’) xlabel(‘X’); ylabel(‘Y’); zlabel(‘Z’); colorbar

这里的关键是hold on命令,它允许你在同一幅图中叠加绘制。‘FaceAlpha’, 0.7设置了曲面的透明度为70%,这样就不会完全遮住后面的红色曲线和黄色标记点。

注意:plot3绘制的是线,它不关心X,Y是否网格化。它的输入是向量。而mesh/surf绘制的是面,输入必须是网格矩阵。这是两者数据格式上的根本区别,千万不能混淆。如果你有一堆无规则的三维散点想连成线,用plot3;如果想根据这些散点插值生成一个曲面,则需要先用scatteredInterpolant等工具插值到网格上,再用meshsurf

5. 从“能看”到“好看”:基础美化与视图控制

画出一个正确的三维图形只是第一步。要让图形清晰、美观、信息传达高效,必须掌握视图控制和基础美化技巧。这部分内容能让你的图形从“学生作业”级别提升到“可发表”级别。

5.1 视角控制:view函数与手动旋转

视角决定了观众观察三维物体的角度。MATLAB默认的3D视角是azimuth = -37.5°, elevation = 30°(方位角,仰角)。但这通常不是最佳角度。

使用view函数精确设置view([az, el])az是方位角,在xy平面内旋转,0度指向y轴正方向,正角度表示逆时针旋转。el是仰角,相对于xy平面的角度,90度为正上方,-90度为正下方。

figure(7) surf(X, Y, Z) title(‘Different View Angles’) subplot(2,2,1) surf(X, Y, Z) view(-37.5, 30) % 默认视角 title(‘Default View’) subplot(2,2,2) surf(X, Y, Z) view(0, 90) % 俯视图,相当于看二维等高线 title(‘Top View (az=0, el=90)’) subplot(2,2,3) surf(X, Y, Z) view(0, 0) % 正视图,从y轴方向看过去 title(‘Front View (az=0, el=0)’) subplot(2,2,4) surf(X, Y, Z) view(120, 30) % 自定义一个更能展示三维结构的视角 title(‘Custom View (az=120, el=30)’)

对于鞍面z=x^2-y^2,俯视图(view(0,90))会显示一组双曲线,这是它的等高线。这个简单的操作,是理解三维图形与二维投影关系的绝佳方式。

手动交互旋转在图形窗口的工具栏,点击“旋转三维”图标(或直接按住鼠标右键拖动),可以实时交互式旋转图形。旋转到满意角度后,你可以用[az, el] = view命令获取当前视角参数,以便在代码中固定这个最佳视角。

5.2 坐标轴与比例:axis函数家族

控制坐标轴范围、比例和显示,对图形美观度影响巨大。

  • axis([xmin xmax ymin ymax zmin zmax]):手动设置三个坐标轴的范围。
  • axis equal强烈推荐。使三个坐标轴的数据单位等长,图形不会因窗口缩放而变形。对于表现几何形状(如球体、立方体)至关重要。
  • axis tight:将坐标轴范围设置为紧贴数据范围,不留白边。
  • axis off:关闭所有坐标轴、刻度和标签的显示,常用于需要突出图形本身,或作为其他图形的底图时。
  • box on/off:控制是否显示坐标轴的外框。box on是默认,box off可以让图形看起来更简洁。
figure(8) mesh(X, Y, Z) title(‘Effect of axis equal’) subplot(1,2,1) mesh(X, Y, Z) title(‘Default Axis (Scaled)’) subplot(1,2,2) mesh(X, Y, Z) axis equal title(‘With axis equal’)

对比一下,右侧使用axis equal的图形,其x和y方向的比例是真实的1:1,能准确反映函数的对称性。

5.3 颜色映射:用颜色传递更多信息

meshsurf中,颜色默认代表Z值的高度。但默认的jet色图并非总是最佳选择。MATLAB提供了丰富的预定义色图,选择的原则是符合数据特性和阅读习惯

  • parula(默认):感知均匀,适合连续数据,是当前MATLAB的默认色图。
  • hot:从黑到红到黄到白,常用于表示热度或能量密度。
  • cool:青和品红的渐变,对比柔和。
  • gray:灰度图,当颜色本身没有特殊含义,或需要打印黑白稿件时使用。
  • hsv:色调饱和度明度循环,常用于周期性数据。

设置与修改色图

figure(9) surf(X, Y, Z, ‘EdgeColor’, ‘none’) colormap(‘hot’) % 将当前图形的色图改为‘hot’ colorbar % 显示颜色条 title(‘Surface with Hot Colormap’)

自定义色图:你甚至可以创建自己的颜色渐变。

% 创建一个从蓝色到白色的渐变色图 my_colormap = [linspace(0,1,64)‘, linspace(0,1,64)‘, ones(64,1)]; % 64x3矩阵 colormap(my_colormap)

注意:色图是一个全局属性,colormap命令会改变当前图形窗口内所有坐标轴对象的色图。如果你在一个图窗(figure)里有多个子图(subplot),并且希望它们使用不同的色图,需要在每个surfmesh绘图后,紧接着对其所在的坐标轴(axes)单独设置。更安全的做法是,在绘图前用axes_handle = subplot(...)获取坐标轴句柄,然后通过colormap(axes_handle, ‘hot’)来指定。

5.4 光照与材质:增加立体感与真实感

对于surf图,添加简单的光照可以极大增强立体感,让曲面看起来更真实。

figure(10) s = surf(X, Y, Z, ‘FaceColor’, ‘interp’, ‘EdgeColor’, ‘none’) title(‘Surface with Lighting’) light(‘Position’, [1, 1, 1]) % 在空间(1,1,1)点位置创建一个光源 lighting gouraud % 使用Gouraud着色算法,产生平滑的光照效果 material dull % 设置表面材质为“暗淡”,反射光较少 % material shiny % 尝试改为“闪亮”,对比效果

light函数定义光源位置,你可以尝试[-1,-1,1][0,0,1]等不同位置,观察阴影和高光的变化。lightingmaterial命令共同控制光照计算的模式和表面反射属性。对于大多数科学可视化,lighting gouraudmaterial dull的组合就足够了,它能在不引入过多艺术化效果的前提下,清晰展现曲面起伏。

6. 实战案例:绘制一个复杂函数曲面并全面优化

现在,让我们综合运用以上所有知识,完成一个从数据生成到最终出图的完整案例。我们的目标是绘制函数z = sin(sqrt(x^2 + y^2)) / sqrt(x^2 + y^2)(二维sinc函数,常用于信号处理)在定义域内的曲面,并进行全面美化。

步骤1:定义域与网格化

% 定义域:避免在原点处除零 x = linspace(-8, 8, 80); y = linspace(-8, 8, 80); [X, Y] = meshgrid(x, y); % 计算R = sqrt(x^2+y^2), 并避免原点处除零错误 R = sqrt(X.^2 + Y.^2); Z = sin(R) ./ R; % 使用点除 % 处理原点处的NaN值(0/0) Z(isnan(Z)) = 1; % 根据极限,当R->0时,sin(R)/R -> 1

这里有两个关键点:1) 使用点运算./进行逐元素除法;2) 处理了原点处R=0导致的NaN(非数)问题,这是绘制此类函数时的常见坑。

步骤2:基础绘图与视图选择

figure(‘Position’, [100, 100, 1200, 500]) % 设置图形窗口位置和大小 subplot(1,2,1) surf_handle1 = surf(X, Y, Z); title(‘Basic Surf Plot’) xlabel(‘X’); ylabel(‘Y’); zlabel(‘Z’); axis tight view(-30, 25) % 选择一个能清晰展示中心波峰和周围衰减的视角

先画一个基础图看看效果。axis tight让图形充满画面。

步骤3:高级美化与光照

subplot(1,2,2) % 绘制曲面,并获取图形对象句柄,便于后续设置属性 surf_handle2 = surf(X, Y, Z, ‘EdgeColor’, ‘none’, ‘FaceColor’, ‘interp’); hold on % 1. 设置一个更专业的色图 colormap(‘parula’) % 使用感知均匀的parula色图 % 2. 添加光照 light(‘Position’, [-10, -10, 10], ‘Style’, ‘infinite’); % 使用平行光 lighting gouraud material([0.4, 0.6, 0.5, 10]) % 自定义材质:[环境光强度,漫反射强度,镜面反射强度,镜面反射指数] % 3. 优化坐标轴与标签 axis tight axis equal % 保证x,y轴比例一致,图形不变形 box on grid on set(gca, ‘FontSize’, 11, ‘LineWidth’, 1.2) % 设置坐标轴字体和线宽 % 4. 添加颜色条并调整 cbar = colorbar(‘eastoutside’); % 将颜色条放在右侧外部 cbar.Label.String = ‘Function Value z’; cbar.Label.FontSize = 12; % 5. 在曲面上叠加一条等高线,增强层次感 % 在Z=0.5的高度画一条等高线 contour_level = 0.5; % 使用contour3在三维空间中画等高线 [C, h] = contour3(X, Y, Z, [contour_level, contour_level], ‘k-’, ‘LineWidth’, 2); % 注意:contour3返回的C结构较复杂,这里我们直接绘制 % 更清晰的做法:用plot3手动画一条 % 找到Z接近0.5的索引,但这对于演示较复杂。这里用contour3简单实现。 hold off title(‘Enhanced 3D Surface with Lighting and Contour’, ‘FontSize’, 14) xlabel(‘X Axis’, ‘FontWeight’, ‘bold’) ylabel(‘Y Axis’, ‘FontWeight’, ‘bold’) zlabel(‘Z Axis’, ‘FontWeight’, ‘bold’) % 6. 整体调整视角 view(-40, 30)

在这个子图中,我们做了大量美化工作:

  1. 去掉了网格线(EdgeColor’, ‘none’),使用平滑插值着色(‘FaceColor’, ‘interp’)。
  2. 添加了平行光源,并自定义了材质反射参数,让曲面更有质感。
  3. 使用axis equal确保图形比例正确。
  4. 精细调整了坐标轴和标签的字体、粗细。
  5. 将颜色条移到外侧并添加了描述标签。
  6. 尝试叠加了一条黑色等高线,以增强三维曲面的层次感(在实际操作中,精确提取特定高度的等高线点可能需要用到contourc函数,这里仅为示意)。

步骤4:导出高质量图片在图形窗口的菜单栏,点击“文件”->“另存为”,可以选择.png,.jpg,.pdf,.eps等格式。对于论文出版,推荐使用矢量格式.pdf.eps,它们无限放大不失真。如果文件太大,可以使用.png格式并设置高分辨率。

% 也可以通过代码打印 print(‘my_3d_surface’, ‘-dpng’, ‘-r300’) % 保存为PNG,分辨率300DPI % print(‘my_3d_surface’, ‘-dpdf’, ‘-bestfit’) % 保存为PDF,自动适应页面

通过这个完整案例,你应该能体会到,绘制三维图形不仅仅是调用一个函数。从数据预处理(网格化、除零处理)、到基础绘图函数选择(surf)、再到视角、颜色、光照、坐标轴等属性的精细调控,每一步都影响着最终图形的信息传达效率和美观程度。掌握这些,你就能让MATLAB成为你手中强大的三维可视化利器,为你的数学建模、数据分析和科研工作增色添彩。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 10:19:39

网易人机交互算法实习生笔试复盘与备考指南

前几天整理邮箱里的旧面经,翻到自己当年参加网易实习生招聘人机交互算法岗位笔试的记录,一时间很多细节又涌上来。那场笔试恰好赶上2018年春季那批,题目量不小,覆盖范围也杂,既有传统的算法数据结构题,也有…

作者头像 李华
网站建设 2026/8/29 10:17:54

时间序列分析:AR、MA与ARMA模型原理与实战建模指南

1. 从“黑箱”到“白盒”:为什么我们需要对随机信号建模? 在信号处理、金融分析、语音识别乃至气象预测等众多领域,我们每天都要面对海量的数据流。这些数据,比如一段音频的波形、一只股票的价格波动、或者一个地区的气温变化&…

作者头像 李华
网站建设 2026/8/29 10:17:20

RTK卸载指南:3步彻底移除Hook、RTK.md和二进制,不留后患

RTK卸载指南:3步彻底移除Hook、RTK.md和二进制,不留后患 【免费下载链接】rtk CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies 项目地址: https://gitcode.com/GitHub_Trend…

作者头像 李华
网站建设 2026/8/29 10:16:08

电竞数据分析实战指南:用公开数据集搭出完整分析链路

电竞数据分析实战指南:用公开数据集搭出完整分析链路 【免费下载链接】awesome-public-datasets A topic-centric list of HQ open datasets. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-public-datasets 你想做电竞数据分析却找不到可用数据…

作者头像 李华
网站建设 2026/8/29 10:15:18

触宝科技校招研发笔试题全解析:算法、数据结构与系统设计实战

拿到这份《触宝科技2017秋季校招研发笔试题(第一批)》的时候,我才刚准备完秋招的第三场笔试。说实话,当时看到“触宝”两个字,脑子里第一反应是输入法和那款海外很火的免费电话应用。后来真把这套题从头到尾做了一遍&a…

作者头像 李华
网站建设 2026/8/29 10:13:52

LocalSend 完整使用指南:无网络环境下跨设备传文件的简单教程

LocalSend 完整使用指南:无网络环境下跨设备传文件的简单教程 【免费下载链接】localsend An open-source cross-platform alternative to AirDrop 项目地址: https://gitcode.com/GitHub_Trending/lo/localsend 你在咖啡馆,想把手机里的几个视频…

作者头像 李华