首頁 > 軟體

matlab的使用:[8]如何畫不同型別的三維影象

2019-12-25 16:06:34

這是本系列經驗的第八篇,主要介紹用matlab軟體畫三維影象的一些相關函數,使用這些函數可以很方便的畫出想要的圖形,非常直觀好用。

1

網狀圖: 

x=linspace(-2, 2, 25); % 在x軸上取25點

y=linspace(-2, 2, 25); % 在y軸上取25點

[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣

zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣

mesh(xx, yy, zz); % 畫出立體網狀圖


2

surf和mesh的用法類似: 

x=linspace(-2, 2, 25); % 在x軸上取25點

y=linspace(-2, 2, 25); % 在y軸上取25點

[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣

zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣

surf(xx, yy, zz); % 畫出立體曲面圖


3

為了方便測試立體繪圖,MATLAB提供了一個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)


4

我們亦可對peaks函數取點,再以各種不同方法進行繪圖。meshz可將曲面加上圍裙: 

[x,y,z]=peaks;

meshz(x,y,z);

axis([-inf inf -inf inf -inf inf]);

 

waterfall可在x方向或y方向產生水流效果: 

[x,y,z]=peaks;

waterfall(x,y,z);

axis([-inf inf -inf inf -inf inf]);


5

下列命令產生在y方向的水流效果: 

[x,y,z]=peaks;

waterfall(x',y',z');

axis([-inf inf -inf inf -inf inf]);


6

meshc同時畫出網狀圖與等高線: 

[x,y,z]=peaks;

meshc(x,y,z);

axis([-inf inf -inf inf -inf inf]);


7

surfc同時畫出曲面圖與等高線: 

[x,y,z]=peaks;

surfc(x,y,z);

axis([-inf inf -inf inf -inf inf]);


8

contour3畫出曲面在三度空間中的等高線: 

contour3(peaks, 20);

axis([-inf inf -inf inf -inf inf]);


9

contour畫出曲面等高線在XY平面的投影: 

contour(peaks, 20);


10

plot3可畫出三度空間中的曲線: 

t=linspace(0,20*pi, 501);

plot3(t.*sin(t), t.*cos(t), t);


11

亦可同時畫出兩條三度空間中的曲線:

t=linspace(0, 10*pi, 501);

plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);



IT145.com E-mail:sddin#qq.com