MATLAB 画 3D 图
MATLAB 画 3D 图
在做仿真和数据分析时,经常需要把二维矩阵可视化为三维曲面图。下面是一段完整的 MATLAB 命令,一行即可把矩阵 misimS1 画成三维曲面并保存为 PNG。
1 | surf(misimS1); shading interp; |
逐行说明
surf(misimS1)
surf 是 MATLAB 绘制三维曲面的核心函数。传入一个二维矩阵,矩阵的每个元素值就是曲面在该位置的高度(Z 轴)。
1 | surf(X, Y, Z) % X、Y 为网格坐标,Z 为高度矩阵 |
shading interp
设置曲面着色方式:
faceted(默认):带网格线的平面着色flat:纯色面片,无插值interp:颜色平滑插值,曲面看起来最细腻
set(gca,’ydir’,’reverse’)
将 Y 轴方向翻转(让数值从上到下由小变大,与图像坐标系一致)。在图像处理场景中,矩阵的第 1 行通常对应图像顶部,而 MATLAB 默认 Y 轴向上递增,翻转后方向与图像坐标系一致。
colorbar()
在曲面旁边添加颜色条,方便读出每个颜色对应的数值范围。
set(gcf,’Position’,[100,300,800,600])
设置 Figure 窗口大小和位置:[左, 下, 宽, 高],单位为像素。这里设为宽 800 × 高 600,导出的图片分辨率也比较合适。
saveas(gcf,’misim 0.1.png’)
把当前 Figure 保存为 PNG 文件。也可以用 print 获得更高分辨率:
1 | print(gcf,'misim 0.1.png','-dpng','-r300'); % 300 dpi |
效果示意
运行上面的代码,可以得到类似这样的效果:
1 | Z |
矩阵中的数值越高,曲面颜色越暖(红/黄),数值越低则越冷(蓝/绿),具体取决于当前 colormap。
常用 3D 绘图函数对比
| 函数 | 说明 |
|---|---|
surf |
彩色曲面,带网格 |
mesh |
线框网格,透明 |
contourf |
等高线填充图(2D 投影) |
surfc |
曲面 + 底部等高线 |
surfl |
带光照效果的曲面 |
waterfall |
单方向瀑布线框 |
小结
MATLAB 画 3D 图的关键步骤:
- 准备好矩阵数据(仿真结果、图像矩阵等)
- 用
surf/mesh等函数绘图 - 用
shading、colormap、colorbar调整观感 - 用
set调整坐标轴方向和窗口尺寸 - 用
saveas或print导出图片
一行命令全部串起来,既能在命令窗口直接运行,也可以写进脚本批量处理。