20250531MATLAB三维绘图

MATLAB三维绘图

三维曲线:plot3

功能介绍

代码实现过程

matlab 复制代码
%%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 函数用于生成二维或三维网格点的坐标矩阵。这些矩阵可以用于绘制曲面图、等高线图等。

语法
matlab 复制代码
[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 函数用于生成二维或三维网格点的坐标矩阵。

实操训练
matlab 复制代码
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 函数有多种调用方式,可以生成不同尺寸的矩阵或直接绘制图形:

  1. peaks: 直接绘制 peaks 函数的三维曲面图。
  2. peaks(n): 生成一个 n×n 的矩阵,表示 peaks 函数在规则网格上的值。
  3. peaks(X,Y): 在指定的网格坐标 X 和 Y 上计算 peaks 函数的值。
  4. X,Y,Z\] = peaks(...): 返回网格坐标矩阵 X、Y 和对应的函数值矩阵 Z。

实操训练
matlab 复制代码
% 生成一个 20×20 的 peaks 矩阵
 Z = peaks(20);
matlab 复制代码
%在指定的网格坐标上计算 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

matlab 复制代码
%返回网格坐标矩阵和函数值矩阵
[X, Y, Z] = peaks;

在这个例子中,peaks 函数默认生成一个 49×49 的网格。这是因为 peaks 函数在没有指定输入参数时,会使用默认的网格参数,即生成一个 49×49 的网格。

自定义网格大小

可以通过指定输入向量来控制网格的大小。例如:

matlab 复制代码
n = 20;  % 指定网格的大小为 20×20
[X, Y, Z] = peaks(n);


使用自定义网格

还可以使用 meshgrid 函数来自定义网格的坐标:

matlab 复制代码
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

matlab 复制代码
[X,Y]=meshgrid(-3:1/8:3);
Z=peaks(X,Y);
mesh(X,Y,Z);


mesh作peaks图

MATLAB代码对齐快捷键Ctrl+i
墨西哥帽
matlab 复制代码
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

带等高线的山峰图
matlab 复制代码
%%
n = 20;  % 指定网格的大小为 20×20
[X, Y, Z] = peaks(n);
[X,Y]=meshgrid(-3:1/8:3);
Z=peaks(X,Y);
meshc(X,Y,Z);
带等高线的墨西哥帽子
matlab 复制代码
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

屏蔽边界面的山峰图
屏蔽边界面的墨西哥帽子
matlab 复制代码
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 的作用和意义
  1. 数值计算中的保护机制:在数值计算中,如果分母非常接近零,会导致结果数值不稳定甚至出现无穷大(Inf)或 NaN(Not a Number)。通过在分母中加上 eps,可以确保分母不会为零或非常接近零,从而避免数值计算中的错误或不稳定结果。
  2. 机器精度:eps 的值约为 2.2204 ∗ 10 − 16 2.2204*10^{-16} 2.2204∗10−16 ,它是 MATLAB 中浮点数的最小差值,用于表示两个相邻浮点数之间的最小间隔。
方式 优点 缺点
mesh(X,Y,Z) 明确指定 X 和 Y 网格,坐标轴显示准确 参数较多,需要额外计算 X 和 Y 网格
mesh(Z) 参数少,代码简洁 坐标轴显示可能不准确,依赖默认行为
相关推荐
我爱C编程13 分钟前
基于QPSK调制解调+Polar编译码(SCL译码)的matlab性能仿真,并对比BPSK
matlab·qpsk·polar编译码·scl译码
傻啦嘿哟42 分钟前
从零开始:用Tkinter打造你的第一个Python桌面应用
开发语言·c#
三十一6141 小时前
6.4 C++作业
开发语言·c++
我的golang之路果然有问题2 小时前
ElasticSearch+Gin+Gorm简单示例
大数据·开发语言·后端·elasticsearch·搜索引擎·golang·gin
Alan3162 小时前
Qt 中,设置事件过滤器(Event Filter)的方式
java·开发语言·数据库
hello kitty w2 小时前
Python学习(6) ----- Python2和Python3的区别
开发语言·python·学习
小鹭同学_3 小时前
Java基础 Day28 完结篇
java·开发语言·log4j
虾球xz3 小时前
CppCon 2014 学习: An Overview of C++11/14
开发语言·c++·学习
椰椰椰耶3 小时前
[网页五子棋][匹配模块]实现胜负判定,处理玩家掉线
java·开发语言·spring boot·websocket·spring
IT瘾君3 小时前
JavaWeb:前后端分离开发-部门管理
开发语言·前端·javascript