MATLAB三维绘图
- 三维曲线:plot3
- 功能介绍
- 代码实现过程
- plot3实现效果
- 三维曲面
- 空间曲面作图命令:mesh
- meshgrid
- 语法
- 示例
- 应用meshgrid
- 实操训练
- peaks
- peaks 的基本用法
- peaks数学表达式
- 实操训练
- 自定义网格大小
- 使用自定义网格
- mesh
- MATLAB代码对齐快捷键Ctrl+i
- 墨西哥帽
- 其他作图命令
- meshc
- 带等高线的山峰图
- 带等高线的墨西哥帽子
- meshz
- 屏蔽边界面的山峰图
- 屏蔽边界面的墨西哥帽子
- 坐标轴控制: axis
- eps
- eps的作用
- eps 的作用和意义
三维曲线:plot3
功能介绍
代码实现过程
%%plot三维螺旋曲线
t=0:pi/10:10*pi;
x=2*t;
y=sin(t);
z=cos(t);
plot3(x,y,z);
plot3实现效果
三维曲面
空间曲面作图命令:mesh
首先,先来了解一些基础知识。
meshgrid
meshgrid 是数值计算和图形绘制中使用的函数,用于生成二维或三维网格点的坐标矩阵。
MATLAB 中的 meshgrid
在 MATLAB 中,meshgrid 函数用于生成二维或三维网格点的坐标矩阵。这些矩阵可以用于绘制曲面图、等高线图等。
语法
[X, Y] = meshgrid(x, y);
[X, Y, Z] = meshgrid(x, y, z);
示例
首先,对于x,生成一个x = -2:0.2:2; 这条语句就是生成一个行向量。其中,-2 是向量的起始值,0.2 是步长,2 是结束值。MATLAB 会从起始值开始,每次加上步长,直到达到或超过结束值(这里刚好达到结束值)来生成向量的元素。
所以在MATLAB的变量值中可以得到
y也是同样的一个行向量。
应用meshgrid
meshgrid 函数用于生成二维或三维网格点的坐标矩阵。
实操训练
x = -2:0.2:2;
y = -2:0.2:2;
[X, Y] = meshgrid(x, y);
Z = X.^2 + Y.^2;
surf(X, Y, Z);
peaks
在 MATLAB 中,peaks 是一个内置函数,用于生成一个样本函数(通常是一个二维的“山脉”形状的函数),它主要用于演示和测试各种三维图形绘制函数(如 surf、mesh 等)。这个函数可以生成一个包含多个局部极大值和极小值的平滑曲面,非常适合用于展示三维图形的特性和功能。
peaks 的基本用法
peaks 函数有多种调用方式,可以生成不同尺寸的矩阵或直接绘制图形:
- peaks: 直接绘制 peaks 函数的三维曲面图。
- peaks(n): 生成一个 n×n 的矩阵,表示 peaks 函数在规则网格上的值。
- peaks(X,Y): 在指定的网格坐标 X 和 Y 上计算 peaks 函数的值。
- [X,Y,Z] = peaks(…): 返回网格坐标矩阵 X、Y 和对应的函数值矩阵 Z。
peaks数学表达式
实操训练
% 生成一个 20×20 的 peaks 矩阵
Z = peaks(20);
%在指定的网格坐标上计算 peaks 函数的值
[X, Y] = meshgrid(-3:0.2:3, -3:0.2:3);
Z = peaks(X, Y);
因为步长为0.2,从-1到0一共有6个值,因为带上端点
指定的网格坐标上计算 peaks 函数的值,步长为0.2,所以从-3到3一共有31个值为31*31的矩阵
返回网格坐标矩阵和函数值矩阵得到49*49
%返回网格坐标矩阵和函数值矩阵
[X, Y, Z] = peaks;
在这个例子中,peaks 函数默认生成一个 49×49 的网格。这是因为 peaks 函数在没有指定输入参数时,会使用默认的网格参数,即生成一个 49×49 的网格。
自定义网格大小
可以通过指定输入向量来控制网格的大小。例如:
n = 20; % 指定网格的大小为 20×20
[X, Y, Z] = peaks(n);
使用自定义网格
还可以使用 meshgrid 函数来自定义网格的坐标:
x = linspace(-3, 3, 49); % 生成包含49个点的向量,范围从-3到3
y = linspace(-3, 3, 49);
[X, Y] = meshgrid(x, y); % 生成49×49的网格坐标矩阵
Z = peaks(X, Y); % 计算peaks函数在该网格上的值
mesh
[X,Y]=meshgrid(-3:1/8:3);
Z=peaks(X,Y);
mesh(X,Y,Z);
MATLAB代码对齐快捷键Ctrl+i
墨西哥帽
x = -8 : 0.5 : 8;
y = -8 : 0.5 : 8;
[X,Y] = meshgrid(x,y);
r = sqrt(X.^2 + Y.^2) + eps;
Z = sin(r) ./ r;
mesh(X,Y,Z)
其他作图命令
meshc
带等高线的山峰图
%%
n = 20; % 指定网格的大小为 20×20
[X, Y, Z] = peaks(n);
[X,Y]=meshgrid(-3:1/8:3);
Z=peaks(X,Y);
meshc(X,Y,Z);
带等高线的墨西哥帽子
x = -8 : 0.5 : 8;
y = -8 : 0.5 : 8;
[X,Y] = meshgrid(x,y);
r = sqrt(X.^2 + Y.^2) + eps;
Z = sin(r) ./ r;
meshc(X,Y,Z);
title('墨西哥帽')
xlabel('x')
ylabel('y')
zlabel('z')
meshz
屏蔽边界面的山峰图
屏蔽边界面的墨西哥帽子
x = -8 : 0.5 : 8;
y = -8 : 0.5 : 8;
[X,Y] = meshgrid(x,y);
r = sqrt(X.^2 + Y.^2) + eps;
Z = sin(r) ./ r;
meshz(X,Y,Z);
title('墨西哥帽')
xlabel('x')
ylabel('y')
zlabel('z')
坐标轴控制: axis
eps
eps的作用
在 MATLAB 中,eps 表示的是机器精度,即 MATLAB 中浮点数的最大相对精度。它通常用于防止除以零的情况,特别是在涉及分母可能非常接近零的数值计算中。
eps 的作用和意义
- 数值计算中的保护机制:在数值计算中,如果分母非常接近零,会导致结果数值不稳定甚至出现无穷大(Inf)或 NaN(Not a Number)。通过在分母中加上 eps,可以确保分母不会为零或非常接近零,从而避免数值计算中的错误或不稳定结果。
- 机器精度:eps 的值约为 2.2204 ∗ 10 − 16 2.2204*10^{-16} 2.2204∗10−16 ,它是 MATLAB 中浮点数的最小差值,用于表示两个相邻浮点数之间的最小间隔。
方式 | 优点 | 缺点 |
---|---|---|
mesh(X,Y,Z) | 明确指定 X 和 Y 网格,坐标轴显示准确 | 参数较多,需要额外计算 X 和 Y 网格 |
mesh(Z) | 参数少,代码简洁 | 坐标轴显示可能不准确,依赖默认行为 |