admin 管理员组

文章数量: 1184232


2024年3月6日发(作者:ssm实训报告心得)

00000

三维绘图

1 三维绘图指令

类 别

网状图

指 令

mesh, ezmesh

meshc, ezmeshc

meshz

surf, ezsurf

曲面图

曲线图

底层函数

等高线

水流效果

影像表示

2 基本XYZ立体绘图命令

 mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。下列命令可画出由函数形成的立体网状图:

surfc, ezsurfc

surfl

plot3, ezplot3

surface

line3

contour3

waterfall

pcolor

说 明

绘制立体网状图

绘制带有等高线的网状图

绘制带有“围裙”的网状图

立体曲面图

绘制带有等高线的曲面图

绘制带有光源的曲面图

绘制立体曲线图

Surf函数用到的底层指令

plot3函数用到的底层指令

绘制等高线

在x方向或y方向产生水流效果

在二维平面中以颜色表示曲面的高度

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的矩阵

0 00

000

00000

surf(xx, yy, zz); % 画出立体曲面图

 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)

为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲

 我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围裙:

[x,y,z]=peaks;

meshz(x,y,z);

0 00

000

00000

 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);

0

0

0

00

0

00000

 surfc同时画出曲面图与等高线:

[x,y,z]=peaks;

surfc(x,y,z);

 contour3画出曲面在三度空间中的等高线:

contour3(peaks, 20);

 contour画出曲面等高线在XY平面的投影:

contour(peaks, 20);

0 00

000

00000

 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);

0

0

0

000

00000

三维绘图的主要功能:

绘制三维线图

绘制等高线图

绘制伪彩色图

绘制三维网线图

绘制三维曲面 图、柱面图和球面图

绘制三维多面体并填充颜色

(一)三维线图

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) 绘 制三维网格

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 00

000

00000

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 00

000

00000

[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

 为球面等分数,缺省为 20

例:绘制三维球面

[x,y,z]=sphere(30);surf(x,y,z);

0 00

000

00000

(六) 图形修饰方法

a. 图形颜色的修饰

matlab 有极好的颜色表现功能,其颜色数据又构成了一维新的数据集合,也可称为四维图形

colormap(MAP) —— 色 图设定函数,MAP为m×3维色图矩阵

图形颜色可根据需要任意生成,也可用matlab配备的色图函数

matlab 的色图函数:

hsv —— 饱 和值色图

gray —— 线性灰度色图

hot —— 暖色色图

cool —— 冷色色图

bone —— 兰 色调灰色图

copper —— 铜色色图

pink —— 粉红色图

prism —— 光谱色图

jet —— 饱和值色图II

flag —— 红、白、蓝交替色图

shading faceted — 网格修饰,缺省方式

shading flat —— 去 掉黑色线条,根据小方块的值确定颜色

shading interp —— 颜色整体改变,根据小方块四角的值差补过度点的值确定颜色

b. 图 形效果修饰

透视与消隐—— 用于网线图

裁剪修饰 ——用于网线图、曲面图

视角修饰 —— 观察不同角度的三维视图

其 它修饰:

i. 水线修饰

ii. 等高线修饰

透视与消隐

p=peaks(30); mesh(p);hidden on

视角修饰(函数view(az,el))

az ----方位角;el ---- 俯视角

省 缺值为:az=-37.5; el=30

例。观察不同视角的波峰图形

z=peaks(40);

subplot(2,2,1);mesh(z);

subplot(2,2,2);mesh(z);view(-15,60);

subplot(2,2,3);mesh(z);view(-90,0);

subplot(2,2,4);mesh(z);view(-7,-10);

其它修饰:

i. 水线修饰 (waterfall)

waterfall(peaks(30))

ii. 等高线修饰

二维

0 00

000

00000

contour(Z,n)-------- 绘制n条等高线

C= contourc(Z,n)------计算n条等高线的坐标

Clable(c)------给等高线加标注

例、 在二维平面上绘制peaks函数的10条等

高线

contour(peaks,10);

C=contourc(peaks,10);clabel(C)

(五)、伪彩色图

pcolor —— 常用于以二维平面图表现三维图形的效果,用颜色表示三维图形的高度。

(六)动画效果

动画生成的步骤

创建帧矩阵 ————— moviein

对动画中的每一帧生成图形,并把它们放到帧矩阵 中 ———— getframe

从帧矩阵中回放动画

0 00

000


本文标签: 颜色 函数 图形 绘制 曲面