matlab绘制三维图形(mesh,surf,contour,fimplicit3)
目录
- mesh函数
- surf函数
- contour函数
- fimplicit3函数
参考学习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=x2−y2z = x^2 - y^2z=x2−y2的图像 ,其中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(x2+y2)x2+y2z=\dfrac{\sin \left( \sqrt{x^{2}+y^{2}}\right) }{\sqrt{x^{2}+y^{2}}}z=x2+y2sin(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 peakscontour(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轴'); % 加上坐标轴的标签
matlab绘制三维图形(mesh,surf,contour,fimplicit3)相关推荐
- matlab绘制三维图形
原文地址:matlab绘制三维图形 作者:hotinko1 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,-,xn ...
- matlab用fill三维,使用matlab绘制三维图形的方法
使用matlab绘制三维图形的方法 使用matlab绘制三维图形的方法 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项 ...
- matlab绘制三维图形现状,MATLAB绘制三维图形
1.画椭球 1.1 圆心在(0,0,0) [x,y,z]=sphere(30);%30是画出来的球面的经纬分面数...30的话就是30个经度, 30个纬度 surf(x,y,z) 图片.png 1.2 ...
- Matlab绘制三维曲线(plot3)和三维图形(mesh surf)
原文链接:http://blog.csdn.net/leo2351960/article/details/37655089 Plot3,绘制三维曲线,与plot命令类似,用法为 [html] view ...
- matlab画三维向量的曲面,Matlab绘制三维曲面(以二维高斯函数为例)
寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手.来学校之后,决定继续看完数字图像处理一书.还是想按照上学期的模式,边看边实现书中的算法.上学期看的时候,是用C语言实现的 ...
- 【MATLAB】三维图形绘制 ( 绘制网格 + 等高线 | meshc 函数 | 绘制平面 + 等高线 | surfc 函数 )
文章目录 一.绘制网格 + 等高线 1.meshc 函数 2.代码示例 二.绘制平面 + 等高线 1.surfc 函数 2.代码示例 一.绘制网格 + 等高线 1.meshc 函数 meshc 函数参 ...
- MATLAB 之 绘制三维图形的基本函数、三维曲面和其他三维图形
文章目录 一.绘制三维曲线的基本函数 二.三维曲面 1. 平面网格坐标矩阵的生成 2. 绘制三维曲面的函数 3. 标准三维曲面 三.其他三维图形 1. 三维条形图 2. 三维饼图 3. 三维实心图 4 ...
- matlab三维绘图poly,matplotlib绘制三维图形mplot3d(包含Mayavi.mlab模块)
http://blog.csdn.net/pipisorry/article/details/40008005 Matplotlib mplot3d 工具包简介 The mplot3d toolkit ...
- MATLAB绘制三维曲面图和等高线 绘图(2)
绘制三维曲面图步骤: 1): 对数据进行处理,得到三维曲面上的点坐标组 方法有: 1.将自变量离散, x=xmin:dx:xmax y=ymin:dy:ymax 2.利用meshgrid 指令 生成 ...
最新文章
- 5G通信3大场景 来源:elecfans
- 算法导论之单源最短路径
- 对运算符重载的函数2
- DOS批处理全面教程
- html中文字空心如何设置,css 中字体文本小诀窍
- 【java学习之路】(javaWeb篇)008.VUE
- 用c#转换word或excel文档为html文件,C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例...
- Model Representation--machine learning
- 2020 快手 被吊打面经
- CPU监控工具(CPU使用率及CPU温度监控)
- scratch3.0接苹果小游戏
- 职场解释系:张三丰的接班人计划
- The server encountered an internal error () that prevented it from fulfilling this request
- Re:从零开始的DS学习之查找算法
- 经济法论文选题有什么推荐吗?
- 什么是工作流管理系统?
- Vue中的过滤器(管道)
- 干货,如何建立数据标签体系
- java程序员从笨鸟到菜鸟_Java程序员从笨鸟到菜鸟之(十四)Html基础积累总结(上)...
- android 查看系统数据库
热门文章
- 质量检查工程师应避免的7个不良习惯
- 强化学习在推荐系统中的环境模拟器构建
- 2022杭电多校(三)
- c++用指针创建二维数组
- 如何输出图片的原始比率
- 游戏中道具投放业务的相关思考
- Couldn‘tparse bundle asset‘“D: \vue\cy_ gw2\dist\js \chunk- vendors.js1Analyzerwi 11usemodule
- AAAI 2023 | 双域风格图像和谐化
- 那些年我们经历过的运维
- 面试题64. 求1+2+…+n(C++)