具體講述了三維曲面繪圖方法等。
平面網(wǎng)格數(shù)據(jù)的生成

此時所有點坐標(biāo)可以表示為:
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就是該平面內(nèi)的網(wǎng)格坐標(biāo)矩陣。
(1)利用矩陣運算生成
x=2:6;
y=(3:m,8)';
X=ones(size(y))*x;
Y=ones(size(x))*y;%所生成的網(wǎng)格坐標(biāo)矩陣與上述一致。
(2)利用meshgrid函數(shù)生成
[X,Y]=meshgrid(x,y);
其中,參數(shù)x,y為向量,存儲網(wǎng)格點坐標(biāo)的X,Y為矩陣。
x=2:6;
y=(3:8)';
[X,Y]=meshgrid(x,y);
當(dāng)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;

繪制三維曲面圖的函數(shù)
mesh(x,y,z,c)
surf(x,y,z,c)
其中,x,y是網(wǎng)格坐標(biāo)矩陣,z是網(wǎng)格點上的高度矩陣,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

拓展:帶等高線的三維網(wǎng)格曲面函數(shù)meshc
帶底座的三維網(wǎng)格曲面函數(shù)meshz
具有等高線的曲面函數(shù)surfc
具有光照效果的曲面函數(shù)surfl
例3:用四種方式繪制函數(shù)
的曲面圖,其中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)

標(biāo)準(zhǔn)三維曲面
(1)sphere函數(shù)
[x,y,z]=sphere(n)
n代表球面的圓滑程度(默認為20),若不帶輸出參數(shù),則直接繪制球面。
(2)cylinder函數(shù)
[x,y,z]=cylinder(R,n)
R代表柱面半徑,n表示有多少間隔點(默認為20個)
例4:用cylinder函數(shù)分別繪制柱面,花瓶面和圓錐面
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函數(shù)繪制兩個相互垂直且直徑相等的圓柱面的相交圖形。
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函數(shù)和fmesh函數(shù)
fsurf(funx, funy, funz, uvlims)
fmesh(funx, funy, funz, uvlims)
其中,funx、funy、funz代表定義曲面x、y、z坐標(biāo)的函數(shù),通常采用函數(shù)句柄的形式。uvlims為funx、funy和funz的自變量的取值范圍,用4元向量[umin,umax, vmin,vmax]描述。默認為[-5,5,-5,5]。
例5:繪制螺旋曲面
文章來源:http://www.zghlxwxcb.cn/news/detail-413089.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-413089.html
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])

到了這里,關(guān)于Matlab繪圖(第五節(jié)-三維曲面)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!