首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MATLAB笔记—绘制三维图像「建议收藏」

MATLAB笔记—绘制三维图像「建议收藏」

作者头像
全栈程序员站长
发布2022-11-17 11:04:51
发布2022-11-17 11:04:51
5.8K0
举报

大家好,又见面了,我是你们的朋友全栈君。

记录几个MATLAB中绘制三维图像的常用函数

1.plot3(x,y,z) /plot3(x,y,z,LineSpec) 用于绘制三维空间中的坐标

需要注意的是当你要绘制由线段连接的一组坐标,那么就将 x、y、z 指定为相同长度的向量。要在同一组坐标轴上绘制多组坐标,那么就将 x、y、z 中的至少一个指定为矩阵,其他指定为向量。

LineSpec可以是指定的线型、标记或颜色。如“-”表示实线,“–”表示虚线,“r”图像变为红色,“y”图像变为黄色。 现在通过几个实例看一下绘制效果

代码语言:javascript
复制
t = linspace(-10,10,1000);
xt = exp(-t./10).*sin(5*t);
yt = exp(-t./10).*cos(5*t);
p = plot3(xt,yt,t);p.LineWidth=4;//绘制后更改线宽

代码语言:javascript
复制
t = 0:pi/500:pi;
//创建包含三行 x 坐标的矩阵 X。创建包含三行 y 坐标的矩阵 Y 
X(1,:) = sin(t).*cos(10*t);
X(2,:) = sin(t).*cos(12*t);
X(3,:) = sin(t).*cos(20*t);
Y(1,:) = sin(t).*sin(10*t);
Y(2,:) = sin(t).*sin(12*t);
Y(3,:) = sin(t).*sin(20*t);
//创建矩阵 Z,其中包含所有三组坐标的 z 坐标。
Z = cos(t);
plot3(X,Y,Z)//绘制多条曲线
legend('1','2','3')
2.stem3(x,y,z) 将 Z 中的各项绘制为针状图,这些针状图从 xy 平面开始延伸,其中 X 和 Y 指定 xy 平面中的针状图位置。X、Y 和 Z 输入必须是大小相同的向量或矩阵。

该函数用于绘制三维离散数据图形

代码语言:javascript
复制
figure;
[X,Y] = meshgrid(0:.1:1);//meshgrid函数用于生成网格矩阵
Z = exp(X+Y);
stem3(X,Y,Z);
代码语言:javascript
复制
figure
X = linspace(-pi/2,pi/2,40);
Z = [sin(X); cos(X)];
stem3(Z)
3.mesh(x,y,z) 创建一个网格图,该网格图为三维曲面,有实色边颜色,无面颜色。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。边颜色因 Z 指定的高度而异。

用于生成网格曲面图

代码语言:javascript
复制
[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//产生色阶的颜色栏

mesh函数还有其他格式,如mesh(___,C) 进一步指定边的颜色。进一步指定边的颜色;mesh(___,Name,Value) 使用一个或多个名称-值对组参数指定曲面属性。例如,‘FaceAlpha’,0.5 创建半透明网格图。

4.surf(x,y,z) 创建一个三维曲面图,它是一个具有实色边和实色面的三维曲面。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。曲面的颜色根据 Z 指定的高度而变化。

常用的生成曲面图的函数

代码语言:javascript
复制
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
C = X.*Y;
surf(X,Y,Z,C)
colorbar

此外,surf(X,Y,Z,C) 还指定曲面的颜色。surf(___,Name,Value) 使用一个或多个名称-值对组参数指定曲面属性。例如,‘FaceAlpha’,0.5 创建半透明曲面。

5.contour(x,y,z)

常用的生成等高线图的函数

代码语言:javascript
复制
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
contour(X,Y,Z)
colorbar

若是想生成带标签的等高线,可用函数contour(X,Y,Z,‘ShowText’,‘on’)实现。

6.meshgrid(x,y) /meshgrid(x,y,z)

用于生成二维或三维的网格 [X,Y] = meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副本;Y 也是一个矩阵,每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。

实例1: 使用向量 x 定义的 x 坐标和向量 y 定义的 y 坐标创建二维网格坐标,并在二维网格上计算表达式 x 2 + y 2 x^2+y^2 x2+y2

代码语言:javascript
复制
x = 1:3;
y = 1:5;
[X,Y] = meshgrid(x,y)
X.^2 + Y.^2

实例2: 使用均匀分布的 x 坐标和 y 坐标在区间 [-2,2] 内创建二维网格,并在二维网格上计算并绘制函数 f ( x , y ) = x e − x 2 − y 2 f(x,y) =xe^{-x^2-y^2} f(x,y)=xe−x2−y2

代码语言:javascript
复制
x = -2:0.25:2;
y = x;
[X,Y] = meshgrid(x);
F = X.*exp(-X.^2-Y.^2);
surf(X,Y,F)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/214266.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 记录几个MATLAB中绘制三维图像的常用函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档