备战数学建模4-MATLAB绘制三维图形

目录

一、MATLAB绘制三维曲线

 1-plot3()函数的基本用法

 2-fplot3()函数绘制三维曲线

二、MATLAB绘制三维曲面

 1-平面网格数据的生成

 2-mesh()函数和surf()函数的用法

 3-meshc()函数、meshz()函数、surfc()函数、surfl()函数的用法

 4-sphere()函数和cylinder()函数的用法

 5-fsurf()函数和fmesh()函数得用法


一、MATLAB绘制三维曲线

1-plot3()函数的基本用法

plot3(x,y,z)函数中x,y,z为参数,组成一组曲线的坐标。

我们看一下例子1,使用plot3()函数绘制一条空间折线,代码如下:

x = [0.2, 1.8, 2.5] ;
y = [1.3, 2.8, 1.1] ;
z = [0.4, 1.2, 1.6] ;
plot3(x,y,z) ;
grid on ;
axis([0,3,1,3,0,2]) ;

绘制的空间折线如下所示,加了网格,有立体感。

备战数学建模4-MATLAB绘制三维图形_第1张图片

 备战数学建模4-MATLAB绘制三维图形_第2张图片

 

我们看一下例子2,用200个数据点和50个数据点分别绘制螺旋线,放到一张图中,代码如下:

t = linspace(0, 10*pi, 200) ;
x = sin(t) + t.*cos(t) ;
y = cos(t) - t.*sin(t) ;
z = t ;
subplot(1,2,1) ;
plot3(x,y,z) ;
grid on ;
subplot(1,2,2) ;
plot3(x(1:4:200),y(1:4:200),z(1:4:200)) ;
grid on ;

绘制的图形如下,显然数据点越多,图形越光滑。

备战数学建模4-MATLAB绘制三维图形_第3张图片

 

我们再看一下上面的例子3,空间中绘制5调正弦曲线,代码如下:

t = 0 : 0.01 : 2*pi ;
t = t' ;
x = [t,t,t,t,t] ;
y = [sin(t), sin(t)+1, sin(t)+2, sin(t)+3, sin(t)+4] ;
z = [t,t,t,t,t] ;
plot3(x,y,z) ;

绘制的图形入下所示:

备战数学建模4-MATLAB绘制三维图形_第4张图片

 当然,上述图形的绘制代码写成这样也是可以的,代码如下:

t = 0 : 0.01 : 2*pi ;
x = t ;
y = [sin(t); sin(t)+1; sin(t)+2; sin(t)+3; sin(t)+4] ;
z = t ;
plot3(x,y,z) ;

含有多组输入参数的plot3(x1,y1,z1,x2,y2,z2,...,xn,yn,zn)函数,每一组的x,y,z向量构成数据点的坐标,绘制一条曲线。

我们看一下例子4,绘制三条不同的正弦曲线,代码如下:

t1 = 0 : 0.01 : 1.5*pi ;
t2 = 0 : 0.01 : 2*pi ;
t3 = 0 : 0.01 : 3*pi ;
plot3(t1,sin(t1),t1,t2,sin(t2)+1,t2,t3,sin(t3)+2,t3) ;

绘制的图形如下所示:

备战数学建模4-MATLAB绘制三维图形_第5张图片

 含有选项的plot3(x,y,z,选项)函数,选项用于指定线型,颜色,数据点标记。

备战数学建模4-MATLAB绘制三维图形_第6张图片

 

t = 0 : pi/50 : 6*pi ;
x = cos(t) ;
y = sin(t) ;
z = 2*t ;
plot3(x,y,z,'p') ;
xlabel('X') ;
ylabel('Y') ;
zlabel('Z') ;
grid on ;

绘制的图形如下所示:

备战数学建模4-MATLAB绘制三维图形_第7张图片

 2-fplot3()函数绘制三维曲线

fplot3(funx,funy,funz,tlims)函数中funx,funy,funz代表定义曲线x,y,z的函数。tlims代表参数函数自变量的取值范围,用二元向量[tmin,tmax]表示,一般默认为[-5,5]。

备战数学建模4-MATLAB绘制三维图形_第8张图片

我们看一下例子6的代码如下所示:

xt = @(t) exp(-t/10).*sin(5*t) ;
yt = @(t) exp(-t/10).*cos(5*t) ;
zt = @(t) t ;
fplot3(xt,yt,zt,[-12,12]) ;

绘制的图形如下所示:

备战数学建模4-MATLAB绘制三维图形_第9张图片

二、MATLAB绘制三维曲面

 1-平面网格数据的生成

利用矩阵生成网格点,代码如下所示:

x = 2 : 6 ;
y = (3 : 8)' ;
X = ones(size(y)) * x ;
Y = y * ones(size(x)) ;

利用meshgrid()函数生成平面网格数据。

[X,Y] = meshgrid(x,y) ,其中参数x,y为向量,存储网格点坐标的X,Y为矩阵。

代码如下:

x = 2 : 6 ;
y = (3 : 8)' ;
[X,Y] = meshgrid(x,y) ;

2-mesh()函数和surf()函数的用法

mesh(x,y,z,c)函数用于绘制三维网格图,surf(x,y,z,c)函数用于绘制三维曲面图。

x,y是网格坐标矩阵,z是网格上的高度矩阵,c用于指定不同高度下的曲面颜色。

我们看一下上面的例子2,代码如下所示:

t = -2 : 0.2 : 2 ;
[X,Y] = meshgrid(t) ;
Z = X.*exp(-X.^2-Y.^2) ;
subplot(1,3,1) ;
mesh(X,Y,Z) ; %绘制三维网格图
subplot(1,3,2) ;
surf(X,Y,Z) ; %绘制三维曲面图
subplot(1,3,3) ;
plot3(X,Y,Z) ;%绘制三维曲线图

 绘制的图形如下所示,我们可以发现三维的图像的颜色是沿着y轴变化的。

备战数学建模4-MATLAB绘制三维图形_第10张图片

 3-meshc()函数、meshz()函数、surfc()函数、surfl()函数的用法

meshc()函数绘带有等高线的三维网格曲面,meshz()函数绘制带有底座的三维网格曲面,

surfc()函数绘制具有等高线的曲面,surfl()函数绘制带有光照效果的曲面。

我们看一下例子3,用四个函数绘制曲面图,代码如下所示:

[x,y] = meshgrid(0:0.1:2, 1:0.1:3) ;
z = (x-1).^2 + (y-2).^2 - 1 ;
subplot(2,2,1) ;
meshc(x,y,z) ;
title('meshc(x,y,z)') ; %含有等高线的曲面
subplot(2,2,2) ;
meshz(x,y,z) ;
title('meshz(x,y,z)') ; %含有底座的曲面
subplot(2,2,3) ;
surfc(x,y,z) ;
title('surfc(x,y,z)') ; %含有等高线的曲面
subplot(2,2,4) ;
surfl(x,y,z) ;
title('surfl(x,y,z)') ; %含有光照效果的曲面

 绘制的四个图形如下所示:

备战数学建模4-MATLAB绘制三维图形_第11张图片

4-sphere()函数和cylinder()函数的用法

[x,y,z] = sphere(n) ;用于绘制三维求面,[x,y,z] = cylinder(R,n)函数用于绘制三维柱面。其中R是一个向量,存放柱面各个等高度上的半径。n是圆柱的圆周上有n个间隔点,要是没写,默认是20.

我们看一下上面的例子,或值柱面,花瓶,圆锥面,代码如下所示:

subplot(1,3,1) ;
[x,y,z] = cylinder() ;
surf(x,y,z) ;
subplot(1,3,2) ;
t = linspace(0,2*pi,40) ;
[x,y,z] = cylinder(cos(t)+2, 30) ;
surf(x,y,z) ;
subplot(1,3,3) ;
[x,y,z] = cylinder(0:0.2:2, 30) ;
surf(x,y,z) ;

 绘制得三个图形如下所示:

备战数学建模4-MATLAB绘制三维图形_第12张图片

5-fsurf()函数和fmesh()函数得用法

如果图形有三个参数方程定义,并且图形有两个自变量,可以使用fsurf()函数和fmesh()函数绘制曲面。 

fsurf(funx,funy,funz,uvlims)函数,fmesh(funx,funy,funz,uvlims)函数,funx,funy,funz代表定义曲面坐标得函数,通常用句柄得形式表示,uvlims是自变量得取值范围。

备战数学建模4-MATLAB绘制三维图形_第13张图片

我们看一下上面得例子6,通过参数方程绘制螺旋曲面,代码如下:

我用fsurf()函数绘制整个曲面,再用fmesh()函数绘制上半部分,上半部分是空心网格。

funx = @(u,v) u.*sin(v) ;
funy = @(u,v) -u.*cos(v) ;
funz = @(u,v) v ;
fsurf(funx, funy, funz,[-5,5,-5,2]) ;
hold on ;
fmesh(funx, funy, funz, [-5,5,-2,2]) ;
hold off ;

 绘制的图形如下所示:

备战数学建模4-MATLAB绘制三维图形_第14张图片

你可能感兴趣的:(MATLAB,数学建模,数模竞赛,三维绘图,plot3)