Matlab绘图(第五节-三维曲面)

文章介绍了在MATLAB中如何生成平面网格数据并使用meshgrid函数、surf函数、plot3函数等创建三维曲面图。此外,还提到了sphere、cylinder函数以及fsurf和fmesh函数在绘制特殊形状和函数曲面时的应用。
摘要由CSDN通过智能技术生成

具体讲述了三维曲面绘图方法等。

平面网格数据的生成

此时所有点坐标可以表示为:

x=[2 2 2 2 2 2;3 3 3 3 3 3;4 4 4 4 4 4;5 5 5 5 5 5;6 6 6 6 6 6]

y=[3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8]

矩阵x,y就是该平面内的网格坐标矩阵。

(1)利用矩阵运算生成

x=2:6;
y=(3:m,8)';
X=ones(size(y))*x;
Y=ones(size(x))*y;%所生成的网格坐标矩阵与上述一致。

(2)利用meshgrid函数生成

[X,Y]=meshgrid(x,y);

其中,参数x,y为向量,存储网格点坐标的X,Y为矩阵。

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

当x与y相同时直接简化为[X,Y]=meshgrid(x)

例1:绘制空间曲线。
x=2:6;
y=(3:8)';
[X,Y]=meshgrid(x,y);
Z=randn(size(X));
plot3(X,Y,Z);
grid on;

绘制三维曲面图的函数

mesh(x,y,z,c)

surf(x,y,z,c)

其中,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色。c省略时,默认c等于z。

例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);
grid on

拓展:带等高线的三维网格曲面函数meshc

带底座的三维网格曲面函数meshz

具有等高线的曲面函数surfc

具有光照效果的曲面函数surfl

例3:用四种方式绘制函数的曲面图,其中x的范围为0~2,y的范围为1~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)
subplot(2,2,2);
meshz(x,y,z)
subplot(2,2,3);
surfc(x,y,z)
subplot(2,2,4);
surfl(x,y,z)

标准三维曲面

(1)sphere函数

[x,y,z]=sphere(n)

n代表球面的圆滑程度(默认为20),若不带输出参数,则直接绘制球面。

(2)cylinder函数

[x,y,z]=cylinder(R,n)

R代表柱面半径,n表示有多少间隔点(默认为20个)

例4:用cylinder函数分别绘制柱面,花瓶面和圆锥面
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(2+cos(t),30);
surf(x,y,z);
subplot(1,3,3);
[x,y,z]=cylinder(0:0.2:2,30);
surf(x,y,z);

例5:用cylinder函数绘制两个相互垂直且直径相等的圆柱面的相交图形。
clear;clc
[x,y,z]=cylinder(1,60)
z=[-1*z(2,:);z(2,:)]
surf(x,y,z)
hold on
surf(y,z,x)
axis equal

fsurf函数和fmesh函数

fsurf(funx, funy, funz, uvlims)

fmesh(funx, funy, funz, uvlims)

其中,funx、funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。uvlims为funx、funy和funz的自变量的取值范围,用4元向量[umin,umax, vmin,vmax]描述。默认为[-5,5,-5,5]。

例5:绘制螺旋曲面

clear;clc
subplot(1,2,1)
fsurf(@(u,v) u.*sin(v),@(u,v) -u.*cos(v),@(u,v) v,[-5,5,-5,2])
subplot(1,2,2)
fmesh(@(u,v) u.*sin(v),@(u,v) -u.*cos(v),@(u,v) v,[-5,5,-5,2])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事随风piao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值