matlab繪制三維圖中,最常見的是三維曲線圖和三維曲面圖
三維曲線圖比較簡(jiǎn)單函數(shù)命令為plot3,已經(jīng)詳細(xì)介紹過,具體請(qǐng)見Matlab三維繪圖------三維曲線圖
三維曲面圖的不同類型及對(duì)比
三維曲面圖又分為三維網(wǎng)面和三維網(wǎng)格面圖,其原理相似只是調(diào)用格式不同而已??偨Y(jié)如下:
plot3(x,y,z);%繪制數(shù)據(jù)的三維曲線圖
mesh(x,y,z); %繪制數(shù)據(jù)的三維網(wǎng)格面圖
surf(x,y,z); %繪制數(shù)據(jù)的三維網(wǎng)面圖
meshc(x,y,z);%繪制數(shù)據(jù)的三維網(wǎng)格面圖,并添加等值線
surfc(x,y,z);%繪制數(shù)據(jù)的三維網(wǎng)面圖,并添加等值線
meshz(x,y,z);%繪制數(shù)據(jù)的三維網(wǎng)格面圖,并添加等值線
[X,Y]=meshgrid(x,y);分別產(chǎn)生兩個(gè)1、以向量x為行,向量y為列的矩陣,2、并且向量x的長度為新矩陣的列數(shù),y的長度為新矩陣的行數(shù) 的新矩陣X和Y.
上面:[X,Y]=meshgrid(x,y)在繪制三維曲面圖中非常重要,在用方程繪制曲面圖中常用。在這里不贅述,詳細(xì)介紹可見前文,請(qǐng)點(diǎn)擊下面超鏈接。
比如向量x=[1,2,3],向量y=[4,5],[X,Y]=meshgrid指令的作用是分別產(chǎn)生兩個(gè)1、以向量x為行,向量y為列的矩陣,2、并且向量x的長度為新矩陣的列數(shù),y的長度為新矩陣的行數(shù) 的新矩陣X和Y.
在這里即為兩行三列。所以:
X=
1 2 3
1 2 3
Y=
4 4 4
5 5 5
關(guān)于[X,Y]=meshgrid指令的作用已詳細(xì)講過,具體可見Meshgrid用法簡(jiǎn)介
關(guān)于mesh(x,y,z)、surf(x,y,z)、meshc(x,y,z)、surfc(x,y,z)、meshz(x,y,z);這幾個(gè)函數(shù)的區(qū)別,通過繪制高斯矩陣的曲面來看看
z=peaks(40);
mesh(z)
surf(z)
meshc(z)
surfc(z)
meshz(z)
將這些圖分別繪制在一張figure上也非常簡(jiǎn)單,仍然是用到多重子圖subplot指令:
z=peaks(40);
subplot(2,3,1);
mesh(z);
subplot(2,3,2);
surf(z);
subplot(2,3,3);
meshc(z);
subplot(2,3,4);
surfc(z)
subplot(2,3,5);
meshz(z)
總結(jié):mesh是網(wǎng)格,surf是網(wǎng)面。網(wǎng)格繪出的三維圖就像是漁網(wǎng)一般一格一格的。網(wǎng)面繪出的三維圖是曲面的,上面沒有格,至于線是輔助線。mesh(z)和surf(z)則是加了等值線,相當(dāng)于那些值相等,就用圈圈做以標(biāo)記。meshz(z)是加了一個(gè)零平面作為參考。
用方程繪制三維曲面圖
舉幾個(gè)不同的例子來說明
例1:
x在[0,2pi],y在[0,2pi],作三維曲面圖z=cos(x)+sin(y)
x=(0:0.01:2*pi);
y=x;
[X,Y]=meshgrid(x,y);
z=cos(X)+sin(Y);
mesh(X,Y,z)
注:通常在確定向量x,y的基礎(chǔ)上,使用命令meshgrid生成新的矩陣數(shù)據(jù)[X,Y],再輸入函數(shù)z=f(x,y,z),最后用mesh或surf指令生成三維曲面圖。
如果不用meshgrid生成矩陣的話會(huì)有如下錯(cuò)誤:
例2:
繪制如下方程的三維曲面圖:
x=(-7.5:0.01:7.5);
y=x;
[X,Y]=meshgrid(x,y);
R=sqrt(X.^2+Y.^2);
Z=sin(R)./R;
mesh(X,Y,Z)
通過meshgrid指令將向量x和y,分別生成了矩陣X、Y.那么在以上代碼中
R=sqrt(X. ^2+ Y.^2)以及Z=sin(R)./R中的加了.的原因是什么呢?
這是因?yàn)樵谧兞窟\(yùn)算里有以下幾個(gè)基本規(guī)則:
a.*b %矩陣a和矩陣b中各個(gè)元素相乘
a.*b.*c %矩陣a,矩陣b和矩陣c中各個(gè)元素相乘
a.^2 %求取矩陣a中各個(gè)元素的平方
a./b %矩陣a中各個(gè)元素除以矩陣b中的各個(gè)元素
a.\b %矩陣b中各個(gè)元素除以矩陣a中的各個(gè)元素
因而先通過meshgrid指令將向量變成矩陣X和Y,再通過上述指令:
x的平方就是a.^2 即:X.^2,以及y的平方: Y.^2 ,而sin(R)/R即a./b , 即:sin(R)./R
以上了解了之后用方程繪制三維曲面圖就非常簡(jiǎn)單了,再來一個(gè)例子:
x=(-3:0.01:3);
y=(-4:0.01:3);
[X,Y]=meshgrid(x,y);
Z=X.*exp(-(X.^2+Y.^2));
mesh(X,Y,Z)
文章來源:http://www.zghlxwxcb.cn/news/detail-472853.html
theta=(-pi:0.05:4*pi);
x=cos(theta);
y=sin(theta);
[X,Y]=meshgrid(x,y);
z=abs(cos(X.*3)).*exp(-abs(theta/3));
mesh(X,Y,z)
文章來源地址http://www.zghlxwxcb.cn/news/detail-472853.html
到了這里,關(guān)于MATLAB三維繪圖---三維曲面圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!