matlab三位画图_MATLAB学习——MATLAB中的三维绘图指
2 基本XYZ⽴体绘图命令mesh和plot是三度空间⽴体绘图的基本命令,mesh可画出⽴体⽹状图,plot则可画出⽴体曲⾯图,两者产⽣的图
形都会依⾼度⽽有不同颜⾊。下列命令可画出由函数
形成的⽴体⽹状图:
x=linspace(-2, 2, 25); % 在x轴上取25点
y=linspace(-2, 2, 25); % 在y轴上取25点
[xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵
zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵
mesh(xx, yy, zz); % 画出⽴体⽹状图
surf和mesh的⽤法类似:
x=linspace(-2, 2, 25); % 在x轴上取25点
y=linspace(-2, 2, 25); % 在y轴上取25点
[xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵
zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是25x25的矩阵
surf(xx, yy, zz); % 画出⽴体曲⾯图
peaks
为了⽅便测试⽴体绘图,MATLAB提供了⼀个peaks函数,可产⽣⼀个凹凸有致的曲⾯,包含了三个局部极⼤点及三个局部极⼩点,其⽅程式为:
要画出此函数的最快⽅法即是直接键⼊peaks:
peaks
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)
我们亦可对peaks函数取点,再以各种不同⽅法进⾏绘图。meshz可将曲⾯加上围裙:
[x,y,z]=peaks;
meshz(x,y,z);
waterfall可在x⽅向或y⽅向产⽣⽔流效果:
[x,y,z]=peaks;
waterfall(x,y,z);
下列命令产⽣在y⽅向的⽔流效果:
[x,y,z]=peaks;
waterfall(x',y',z');
meshc同时画出⽹状图与等⾼线:
[x,y,z]=peaks;
meshc(x,y,z);
surfc同时画出曲⾯图与等⾼线:
[x,y,z]=peaks;
surfc(x,y,z);
contour3画出曲⾯在三度空间中的等⾼线:
contour3(peaks, 20);
contour画出曲⾯等⾼线在XY平⾯的投影:
contour(peaks, 20);
plot3可画出三度空间中的曲线:
t=linspace(0,20*pi, 501);
plot3(t.*sin(t), t.*cos(t), t);
亦可同时画出两条三度空间中的曲线:
t=linspace(0, 10*pi, 501);
plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);
3 三维绘图的主要功能
绘制三维线图
绘制等⾼线图
绘制伪彩⾊图
绘制三维⽹线图
绘制三维曲⾯ 图、柱⾯图和球⾯图
绘制三维多⾯体并填充颜⾊
(⼀)三维线图
plot3 —— 基本的三维图形指令
调⽤格式:
plot3(x,y,z) —— x,y,z是长度相同的向量
plot3(X,Y,Z) —— X,Y,Z是维数相同的矩阵
plot3(x,y,z,s) —— 带开关量
plot3(x1,y1,z1,’s1’, x2,y2,z2,’s2’, …)
⼆维图形的所有基本特性对三维图形全都适⽤。 定义三维坐标轴⼤⼩axis([xmin xmax ymin ymax zmin zmax ])
grid on(off) 绘制三维⽹格
linspace函数调用的格式为text(x,y,z,‘string’) 三维图形标注
⼦图和多窗⼝也可以⽤到三维图形中
例:绘制三维线图
t=0:pi/50:10*pi;plot3(t,sin(t),cos(t),’r:’)
(⼆)三维饼图
pie3([4 3 6 8 9])
(三)三维多边形
fill3 = fill —— 三维多边形的绘制和填⾊与⼆维多边形完全相同
调⽤格式:
fill3(x,y,z,‘s’) —— 与⼆维相同
例: ⽤随机顶点坐标画出5个粉⾊的三⾓形,并⽤黄⾊的○表⽰顶点y1=rand(3,5);y2=rand(3,5);y3=rand(3,5);
fill3(y1,y2,y3,’m’);hold on;plot3(y1,y2,y3,’yo’)
(四)三维⽹格图
mesh —— 三维⽹线绘图函数
调⽤格式:
mesh(z) —— z为n×m的矩阵,x与y坐标为元素的下标
mesh(x,y,z) —— x,,y,z 分别为三维空间的坐标位置
例,矩阵的三维⽹线图
z=rand(6);
0.8808 0.0729 0.4168 0.7694 0.3775 0.4776
0.3381 0.7101 0.0964 0.6352 0.3826 0.7086
0.1895 0.8791 0.6747 0.8965 0.6876 0.2380
0.7431 0.3594 0.5626 0.8784 0.1217 0.3910
0.7189 0.0899 0.8130 0.4865 0.0768 0.9759
0.8792 0.1610 0.8782 0.1131 0.1433 0.6288
z=round(z)
1 0 0 1 0 0
0 1 0 1 0 1
0 1 1 1 1 0
1 0 1 1 0 0
1 0 1 0 0 1
1 0 1 0 0 1
mesh(z);
例:8阶hadamard矩阵的⽹线图
h2=[1 1;1 -1];h4=[h2 h2;h2 -h2]
h8=[h4 h4;h4 -h4]
1 1 1 1 1 1 1 1
1 -1 1 -1 1 -1 1 -1
1 1 -1 -1 1 1 -1 -1
1 -1 -1 1 1 -1 -1 1
1 1 1 1 -1 -1 -1 -1
1 -1 1 -1 -1 1 -1 1
1 1 -1 -1 -1 -1 1 1
1 -1 -1 1 -1 1 1 -1
mesh(h8)
⽣成坐标 —— [X,Y]=meshgrid(x,y)
表达式点运算 —— Z=X.^2+Y.^2
X,Y是n×m的矩阵,维数可任 定
X— n
Y— m
Z—
默认⽅位⾓:37。5º,俯⾓30º。
meshgrid—— ⽹线坐标值计算函数
z=f(x,y) — 根据x,y坐标出z的⾼度
例:绘制z=x2+y2的三维⽹线图形
x=-5:5; y=x;
[X,Y]=meshgrid(x,y)
Z=X.^2+Y.^2
mesh(X,Y,Z)
colormap( [R,G,B])—— ⾊图设定函数
matlab 的颜⾊数据集合为红、绿、兰三颜⾊矩阵[R,G,B],维数 m×3 r,g,b在[0 1]区间连续取值,理论上颜⾊种类可达⽆穷多种
matlab使⽤三维向量表⽰⼀种颜⾊,常⽤颜⾊数据见下表
饱和⾊
[0 0 0] — ⿊⾊
[0 0 1] — 兰⾊
[0 1 0] — 绿 ⾊
[0 1 1] — 浅兰
[1 0 0] — 红⾊
[1 0 1] — 粉红
[1 1 0] — 黄 ⾊
[1 1 1] — ⽩⾊
调和⾊
[0.5 0.5 05] — 灰⾊
[0.5 0 0] — 暗 红⾊
[1 0.62 0.4] — 铜⾊
[0.49 1 0.8] — 浅绿
[0.49 1 0.83] —宝⽯兰
(五)三维曲⾯图
surf —— 三维曲⾯绘图函数,与⽹格图看起来⼀样
与三维⽹线图的区别:
⽹线图:线条有颜⾊,空挡是⿊⾊的(⽆颜⾊)
曲⾯图:线条是⿊⾊的,空挡有颜⾊(把线条之间的空挡填充颜⾊,沿z轴按每⼀⽹格变化调⽤格式:
surf(x,y,z) —— 绘制三维曲⾯图,x,y,z为图形坐标向量
例:
[X,Y,Z]=peaks(30)
※peaks为matlab
⾃动⽣成的三维测
试图形
surf(X,Y,Z)
三维⽹线图作图要领
surfc(X,Y,Z) — 带等⾼线的曲⾯图
[X,Y,Z]=peaks(30);surfc(X,Y,Z)
surfl(X,Y,Z) —— 被光照射带阴影的曲⾯图
[X,Y,Z]=peaks(30);surfl(X,Y,Z)
cylinde(r,n) — 三维柱⾯绘图函数
r 为半径;n为柱⾯圆周等分数
例:绘制三维陀螺锥⾯
t1=0:0.1:0.9;
t2=1:0.1:2;
r=[t1 -t2+2];
[x,y,z]=cylinder(r,30);
surf(x,y,z);
grid

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。