MATLAB绘制三维图形z=5_plot3用法

MATLAB绘制三维图形z=5_plot3用法matlab绘制三维图形(mesh,surf,contour,fimplicit3)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

参考学习b站:数学建模学习交流

mesh函数

绘制出在某一区间内完整的网格图

mesh(X,Y,Z)的用法,其中X是n维向量,Y是m维向量,Z是m*n维的矩阵:

X = [1,2,4]
Y = [3,5]
Z = [4,8,10;5,9,13]
mesh(X,Y,Z)  % (X(j), Y(i), Z(i,j))是线框网格线的交点的坐标
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签

在这里插入图片描述
mesh(Z)的用法,其中Z是m*n维的矩阵:

Z = [4,8,10;5,9,13]
mesh(Z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
% 等价于
X = 1:3
Y = 1:2
Z = [4,8,10;5,9,13]
mesh(X,Y,Z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签

在这里插入图片描述
mesh(X,Y,Z)中,X中元素不是按照从小到大排序的时候:

X = [1,10,4]
Y = [3,5]
Z = [4,8,10;5,9,13]
mesh(X,Y,Z)
hidden off  % 可以看到背部的图像,不会遮挡(默认是看不到的)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签

在这里插入图片描述
mesh(X,Y,Z)的用法,其中X、Y和Z都是m*n维的矩阵

X = [1,2,4;1,2,4]   
Y = [3,3,3;5,5,5]
Z = [4,8,10;5,9,13]
mesh(X,Y,Z) % (X(i,j), Y(i,j), Z(i,j))是线框网格线的交点的坐标
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签

在这里插入图片描述

例一:

绘制 z = x 2 − y 2 z = x^2 – y^2 z=x2y2的图像 ,其中x和y都位于[0,5]之间

(注意使用点运算符号)

n = 11;
tem = linspace(0,5,n);  %[0,5]这个区间等分为n个点(等差数列的形式)
% B = repmat(A,m,n),将矩阵 A 复制 m×n 块
% 即把 A 作为 B 的元素,B 由 m×n 个 A 平铺而成
x = repmat(tem,n,1);
y = repmat(tem',1,n);
z = x.^2 - y.^2;    % 要使用点运算符号
mesh(x,y,z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示

在这里插入图片描述
例二:
绘制 z = sin ⁡ ( x 2 + y 2 ) x 2 + y 2 z=\dfrac{\sin \left( \sqrt{x^{2}+y^{2}}\right) }{\sqrt{x^{2}+y^{2}}} z=x2+y2
sin(x2+y2
)
的图形,其中x和y都位于[-5,5]之间

[x,y] = meshgrid(-5:0.5:5);  % 快速生成网格所需的数据
tem = sqrt(x.^2+y.^2)+1e-12;   % 防止除0而缺失点,因此加上一个极小值
z = sin(tem)./tem;  % 如果不对tem处理,那么z的最中间的一个值 0/0 = NaN
mesh(x,y,z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示

在这里插入图片描述
meshc函数:除了mesh函数图形外,还在xy平面上绘制曲面的等高线

meshc(x,y,z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示

在这里插入图片描述

surf函数

绘制出在某一区间内完整的曲面图,surf函数和mesh函数的的调用格式基本相同,两者的区别为mesh绘出彩色的线,surf绘出彩色的面

例一的对比:

[x,y] = meshgrid(linspace(0,5,11));
% [x,y] = meshgrid([0:0.5:5]);  或者直接写成[x,y] = meshgrid(0:0.5:5);
z = x.^2 - y.^2;
subplot(1,2,1)  % subplot(m,n,index)
mesh(x,y,z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
title('mesh(x,y,z)')

subplot(1,2,2)
surf(x,y,z)  
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
% axis([0,5,0,5,-inf,+inf])  % 设置坐标轴刻度范围
title('surf(x,y,z)')

在这里插入图片描述

例二的对比:

[x,y] = meshgrid(-5:0.5:5);  % 快速生成网格所需的数据
tem = sqrt(x.^2+y.^2)+1e-12;   
z = sin(tem)./tem;  % 如果不对tem处理,那么z的最中间的一个值 0/0 = NaN
subplot(1,2,1)
mesh(x,y,z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
title('mesh(x,y,z)')

subplot(1,2,2)
surf(x,y,z)  % (X(j), Y(i), Z(i,j))是线框网格线的交点
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
title('surf(x,y,z)')

在这里插入图片描述
surfl函数:加上了灯光效果,看起来自然点

surfl(x,y,z)
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示

在这里插入图片描述

contour函数

绘制等高线图

contour(x,y,z) 在x-y平面绘制等高线图,Matlab会自动选择等高线的层级

[x,y] = meshgrid(-3:0.1:3);  
% 一个语句太长时,可以加上三个点然后在下一行继续写
z =  3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)...  
    -10* (x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
    - 1/3*exp(-(x+1).^2 - y.^2);  

% matlab中内置的peaks函数,常常作为演示使用
% edit peaks

contour(x,y,z)
xlabel('x轴');  ylabel('y轴');  % 加上坐标轴的标签

在这里插入图片描述
显示每一层的高度等

maxz = max(max(z))
minz = min(min(z))
levels = linspace(minz,maxz,10)  % 从最小值到最大值,等分成10个点
contour(x,y,z,levels,'ShowText','on','LineWidth',1)  % 最小值或者最大值可能显示不出来,因为Matlab会帮我们自动调整
xlabel('x轴');  ylabel('y轴');  % 加上坐标轴的标签

在这里插入图片描述
contourf函数:和contour函数类似,只不过画出来的等高线图有颜色填充

contourf(x,y,z,levels,'ShowText','on') 
xlabel('x轴');  ylabel('y轴');  % 加上坐标轴的标签

在这里插入图片描述

fimplicit3函数

用来绘制隐函数

fimplicit3(f,interval) 为 x、y 和 z 指定绘图区间

% 函数句柄,注意要用点运算符
f = @(x,y,z) (x.^2+(9/4)*y.^2+z.^2-1).^3-x.^2.*z.^3-(9/80)*y.^2.*z.^3;
fimplicit3(f,[-1.5,1.5,-1.5,1.5,-1.5,1.5],'EdgeColor', 'none', 'FaceAlpha',0.5);
xlabel('x轴');  ylabel('y轴');  zlabel('z轴');  % 加上坐标轴的标签

在这里插入图片描述

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183886.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Invalidate介绍[通俗易懂]

    Invalidate介绍[通俗易懂]1、Invalidate介绍  voidInvalidate(BOOLbErase=TRUE);  该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口,那么原来被遮住的部分就是无效的,需要重绘。这时Windows会在应用程序的消息队列中放置WM_PAINT消息。MFC为窗口类提供了WM_PAINT的消息处理函数OnPaint,OnPaint负责重绘窗口。视图类有一些例外,在视图类的OnPaint函数中调用了OnDraw函数,实际

    2025年5月23日
    3
  • mysql 错误1062_mysql主从切换步骤

    mysql 错误1062_mysql主从切换步骤周末的时候,突然收到报警的短信,是一台slave服务器sql_thread不为YES,唉,还能不能愉快的过周末啊。上服务器一看是,是主键冲突导致从库中断,也是Last_SQL_Errno:1062错误,我们常用的方法是跳过错误,比如SETGLOBALSQL_SLAVE_SKIP_COUNTER=1或者直接slave-skip-errors=1062,这样确实解决了问题,恢复了复制。但是久而…

    2022年8月30日
    2
  • PHP数组去重的更快实现方式分析

    PHP数组去重的更快实现方式分析PHP数组去重的更快实现方式分析

    2022年4月24日
    38
  • Crontab定时任务配置

    Crontab定时任务配置一、开启crontab1.查看crontab是否启动sudolaunchctllist|grepcron2.检查需要的文件ls-al/etc/crontab3.如果crontab文件不存在则创建sudotouch/etc/crontab上述操作完成之后就可以正常使用crontab啦二、crontab服务开启、关闭1.开启su…

    2025年8月24日
    2
  • 安防监控系统的几个基础小知识

    安防监控系统的几个基础小知识  问题一:摄像机装多高?  我在和客户沟通的时,很多时候都建议客户室内不低于2.5米,室外不低于3.5米,这些数字虽然简单但考虑到了室内的高度及镜头下压的角度,也考虑到了室外安装时照射的长度及防人为破坏的因素。  问题二:支架安装有何建议?  在装摄像机的时候都会有壁装和吊装两种选择,超市等室内环境吊装比较多,室外一般选择壁装。一般轻巧些的机器比如中维世纪的JVS-N81-HY用04、05…

    2022年6月28日
    24
  • 群晖linux怎么进入u盘,黑群晖菜鸟安装教程(一)制作U盘引导及软洗白!

    群晖linux怎么进入u盘,黑群晖菜鸟安装教程(一)制作U盘引导及软洗白!教程多都是参考网络上的一些大师们的教程做一些简化和把一些要点易出错的地方给大家指出,让大家能更快加入到群晖一起折腾。什么是黑群晖最简单的理解就是用普通的PC机安装了群晖NAS系统让普通的PC机可以体验白群晖的大多数功能。黑群晖对电脑的要求很低最是一般要求CPU为64位不然安装不了的。而且一般我们采用的PC机为低功率集成CPU的ITX主板。常用的主板有集成CPUD525E-240等低功率主板在正…

    2022年5月2日
    127

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号