天天看點

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

前面兩期我們介紹了plot函數的繪圖作用,這一期我們繼續學習三維曲面的Matlab繪制函數。

以馬鞍面為例,其方程為:

z = x²/a²-y²/b²

在指令行視窗輸入:

>> x=-2:0.1:2;

>> y=-2:0.1:2;

意為從-2到2每隔0.1記錄一個數,生成一個數組,0.1是步長。記得後面加“;”,不即時輸出結果。

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

meshgrid的作用是生成一個網格矩陣,從工作區的變量屬性可以看出,X和Y都是41×41的矩陣。

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

為什麼要生成矩陣呢?因為對于曲面方程z = x²/a²-y²/b²而言,每一個x都會對應一列y值,同時每一個y也會對應一列x值。那麼,z坐标方向的值的數量應該是x和y兩個數組維數的乘積,是以是41×41。

>> Z=X.^2/3-Y.^2/3;

注意這裡不是X^2,而是X.^2,因為X是一個矩陣,是以有一點和沒一點是有差別的。

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

X^2是矩陣之間的乘法(X必須是方陣),X.^2則是矩陣中每個元素做平方運算。

接下來就可以用surf函數繪制曲面了,輸入:

>> surf(X,Y,Z);

>> axis equal;

>> view(-30,20);

得到結果如下

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

曲面上的網格映射到XY平面就是[X,Y],也就是meshgrid函數生成的矩陣;view的作用則是調整圖檔的觀察視角。(如果x和y數組的步長越小,生成的網格就會越密。曲面看上去就會一片黑,放大後才能看清網格)

繼續輸入:

>> shading interp

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

(除去網格)

>> colorbar

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

(添加顔色标尺)

曲面的配色可以用colormap調節,最常見的是colormap('jet'),輸入後結果如下:

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

如果不熟悉MATLAB中的函數用法,可以用help函數(一個很有用的函數)查詢,如:

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

可以看到colormap内置的配色方式有很多種:

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

比如colormap('copper'),結果如下:

matlab繪制機關球的三維網格圖,【MATLAB系列03】三維曲面的網格矩陣繪制

今天就講這麼多,在後面的學習過程中,我們還會經常用到矩陣的思維。不要害怕矩陣這兩個字,數學不好也不用擔心。小編負責搞定數學,你們隻需要熟悉語言就行了。

像這一期提到的函數,meshgrid、surf、colormap等,關看字面意思就能猜個八九不離十,需要記的隻是函數後面用到哪些參數。

現在,Matlab的面紗才剛揭開一角而已,更多有意思的功能還在等我們去發掘。