MATLAB繪圖與圖形處理(2)

原文地址爲:MATLAB繪圖與圖形處理(2)

7.2  三維圖形

7.2.1  三維曲線、面填色命令

命令 comet3

功能  三維空間中的彗星圖。彗星圖爲一個三維的動畫圖像,彗星頭(一個小圓圈)沿着數據指定的軌道前進,彗星體爲跟在彗星頭後面的一段痕跡,彗星軌道爲整個函數所畫的實曲線。注意一點的是,該彗星軌跡的顯示模式EraseMode爲none,所以用戶不能打印出彗星軌跡(只能得到一個小圓圈),且若用戶調整窗口大小,則彗星會消失。

用法  comet3(z) 用向量z中的數據顯示一個三維彗星

      comet3(x,y,z) 顯示一個彗星通過數據xyz確定的三維曲線。

      comet3(x,y,z,p) 指定彗星體的長度爲:p*lengthy)。

7-24

>>t = -20*pi:pi/50:20*pi;

>>comet3((cos(2*t).^2).*sin(t),(sin(2*t).^2).*cos(t),t);

圖形的結果爲圖7-24

 

 

 

命令 fill3

功能  用指定的顏色填充三維多邊形。陰影類型爲平面型和Gouraud型。

用法  fill3(X,Y,Z,C) 填充由參數xyz確定多邊形。若xyz爲矩陣,fill3生成n個多邊形,其中n爲矩陣的列數。在必要的時候,fill3會自動連接最後一個節點和第一個節點。以便能形成封閉的多邊形。參數c指定顏色,這兒c爲引用當前色圖的下標向量或矩陣。若c爲行向量,則c的維數必須等於x的列數和y的列數,若c爲列向量,則c的維數必須等於矩陣x的行數和的行數。

      fill3(X,Y,Z,ColorSpec) 用指定的顏色ColorSpec填充由xyz確定的多邊形。

      fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,對多邊形的不同區域用不同的顏色進行填充。

      fill3(,'PropertyName',PropertyValue) 允許用戶對特定的patch屬性進行設置。

      h = fill3(返回patch圖形對象的句柄向量,每一塊(patch)對應一個句柄。

運算規則:

1.若X,YZ爲同型的矩陣,fill3生成XY,Z中相同位置的元素確定的頂點,每一列生成一個多邊形。

2.若只有XY或Z爲矩陣,則fill3由列向量參數生成可用的同型矩陣。

3.若用戶對填充的顏色指定爲ColorSpec,則fill3生成陰影類型爲flat-shaded的多邊形,且設置塊(patch)的屬性FaceColor爲RGB顏色形式的矩陣。

4.若用戶用矩陣C指定顏色,命令fill3通過座標軸屬性Clim來調整C中的元素,在引用當前色圖之前,用於指定顏色座標軸的參數比例。

5.若參數C爲一行向量,命令fill3生成帶平面陰影(flat-shaded)的多邊形,同時設置補片對象的面顏色(FaceColor)屬性爲flat。向量c中的每一元素成爲每一補片對象的顏色數據(CData)屬性的值。

6.若參數C爲一矩陣,命令fill3生成帶內插顏色的多邊形,同時設置多邊形補片對象的FaceColor屬性爲interp。命令fill3採用對多邊形頂點色圖的下標指定的顏色採用線性內插算法,同時多邊形的顏色採用對頂點顏色用內插算法得到的顏色。矩陣C的每一列元素變成對應補片對象的Cdata屬性值。

7.若參數C爲一列向量,命令fill3先複製C的元素,使之成爲所需維數的矩陣,再按上面的方法6進行計算。

7-25

>>X = 10*rand(4);Y=10*rand(4);Z=10*rand(4);

>>C = rand(4);

>>fill3(X,Y,Z,C)

圖形結果可能爲圖7-25

 

 

 

7.2.2  三維圖形等高線

命令1  contour

功能  曲面的等高線圖

用法  contour(z)  把矩陣z中的值作爲一個二維函數的值,等高曲線是一個平面的曲線,平面的高度vMatlab自動取的;

      contour(x,y,z)  (x,y)是平面z=0上點的座標矩陣,z爲相應點的高度值矩陣。效果同上;

      contour(z,n)  畫出n條等高線;

      contour(x,y,z,n)  畫出n條等高線;

      contour(z,v)  在指定的高度v上畫出等高線;

      contour(x,y,z,v)  同上;

      [c,h] = contour(…)  返回如同contourc命令描述的等高矩陣c和線句柄或塊句柄列向量h,這些可作爲clabel命令的輸入參量,每條線對應一個句柄,句柄中的userdata屬性包含每條等高線的高度值;

      contour(…,’linespec’)  因爲等高線是以當前的色圖中的顏色畫的,且是作爲塊對象處理的,即等高線是一般的線條,我們可象畫普通線條一樣,可以指定等高線的顏色或者線形。

7-26

    >>contour(peaks(40))

圖形結果爲圖7-26

 

 

 

命令2  clabel

功能  在二維等高線圖中添加高度標籤。在下列形式中,若有h出現,則會對標籤進行恰當的旋轉,否則標籤會豎直放置,且在恰當的位置顯示個一個“+”號。

用法  clabel(C,h) 把標籤旋轉到恰當的角度,再插入到等高線中。只有等高線之間有足夠的空間時才加入,當然這決定於等高線的尺度。

      clabel(C,h,v) 在指定的高度v上顯示標籤h,當然要對標籤做恰當的處理。

      clabel(C,h,'manual') 手動設置標籤。用戶用鼠標左鍵或空格鍵在最接近指定的位置上放置標籤,用鍵盤上的回車鍵結束該操作。當然會對標籤做恰當的處理。

      clabel(C) 在從命令contour生成的等高線結構c的位置上添加標籤。此時標籤的放置的位置是隨機的。

      clabel(C,v) 在給定的位置v上顯示標籤

      clabel(C,'manual') 允許用戶通過鼠標來給等高線貼標籤

7-27

>>[x,y] = meshgrid(-2:.2:2); 

>>z = x.*y.*exp(-x.^2-y.^2);

>>[C,h] = contour(x,y,z);

>>clabel(C,h);

圖形結果爲圖7-27

 

 

 

命令 contourc

功能  低級等高線圖形計算命令。該命令計算等高線矩陣c,該矩陣可用於命令contourcontour3contourf等。矩陣z中的數值確定平面上的等高線高度值,等高線的計算結果用由矩陣z維數決定的間隔的寬度。

用法  C = contourc(Z) 從矩陣z中計算等高矩陣,其中z的維數至少爲2*2階,等高線爲矩陣z中數值相等的單元。等高線的數目和相應的高度值是自動選擇的。

     C = contourc(Z,n) 在矩陣z中計算出n個高度的等高線。

     C = contourc(Z,v) 在矩陣z中計算出給定高度向量v上計算等高線,當然向量v的維數決定了等高線的數目。若只要計算一條高度爲a的等高線,輸入:contourc(Z,[a,a]);

     C = contourc(x,y,Z) 在矩陣z中,參量xy確定的座標軸範圍內計算等高線;

     C = contourc(x,y,Z,n) 從矩陣Z中,參量xy確定的座標範圍內畫出n條等高線;

     C = contourc(x,y,Z,v) 從矩陣Z中,參量xy確定的座標範圍內,畫在v指定的高度上指定的等高線。

命令4  contour3

功能  三維空間等高線圖。該命令生成一個定義在矩形格柵上曲面的三維等高線圖。

用法  contour3(Z) 畫出三維空間角度觀看矩陣z的等高線圖,其中z的元素被認爲是距離xy平面的高度,矩陣z至少爲2*2階的。等高線的條數與高度是自動選擇的。若[mn]=sizez),則x軸的範圍爲[1n]y軸的範圍爲[1m]

      contour3(Z,n) 畫出由矩陣z確定的n條等高線的三維圖。

      contour3(Z,v) 在參量v指定的高度上畫出三維等高線,當然等高線條數與向量的維數相同;若想只畫一條高度爲h的等高線,輸入:contour3(Z,[h,h])

      contour3(X,Y,Z)contour3(X,Y,Z,n)contour3(X,Y,Z,v) X與Y定義x-軸與y-軸的範圍。若X爲矩陣,則X(1,:)定義x-軸的範圍;若Y爲矩陣,則Y(:,1)定義y-軸的範圍;若X與Y同時爲矩陣,則它們必須同型。不論爲哪種使用形式,所起的作用與命令surf相同。若X或Y有不規則的間距,contour3還是使用規則的間距計算等高線,然後將數據轉變給X或Y。

      contour3(,LineSpec) 用參量LineSpec指定的線型與顏色畫等高線。

      [C,h] = contour3(畫出圖形,同時返回與命令contourc中相同的等高線矩陣C,包含所有圖形對象的句柄向量h;除非沒有指定LineSpec參數,contour3將生成patch圖形對象,且當前的colormap屬性與caxis屬性將控制顏色的顯示。不論使用何種形式,該命令都生成line圖形對象。

7-28

>>[X,Y] = meshgrid([-2:.25:2]);

>>Z = X.*exp(-X.^2-Y.^2);

>>contour3(X,Y,Z,30)

圖形結果爲圖7-28

 

 

 

命令 contourf

功能  填充二維等高線圖。即先畫出不同等高線,然後相鄰的等高線之間用同一顏色進行填充。填充用的顏色決定於當前的色圖顏色。

用法  contourf(Z) 矩陣z的等高線圖,其中z理解成距平面的高度。Z至少爲2*2階的。等高線的條數與高度是自動選擇的。

      contourf(Z,n) 畫出矩陣zn條高度不同的等高線。

      contourf(Z,v) 畫出矩陣z的、由v指定的高度的等高線圖。

      contourf(X,Y,Z)contourf(X,Y,Z,n)contourf(X,Y,Z,v) 畫出矩陣z的等高線圖,其中X與Y用於指定x-軸與y-軸的範圍。若X與Y爲矩陣,則必須與Z同型。若X或Y有不規則的間距,contour3還是使用規則的間距計算等高線,然後將數據轉變給X或Y。

      [C,h,CF] = contourf()畫出圖形,同時返回與命令contourc中相同的等高線矩陣C,C也可被命令clabel使用;返回包含patch圖形對象的句柄向量h;返回一用於填充用的矩陣CF。

7-29

>>contourf(peaks(30),20);

>>colormap gray

圖形結果爲圖7-29

 

 

 

命令6  pie3

功能  三維餅形圖

用法  pie3(X) x中的數據畫一個三維餅形圖。X中的每一個元素代表三維餅形圖中的一部分。

      pie3(X,explode) x中的某一部分可以從三維餅形圖中分離出來。explode是一個與x同型的向量或矩陣,explode中非零的元素對應x中從餅形圖中分離出來的分量。

      h = pie3(返回一個分量爲patchsurfacetext圖形句柄對象的向量。即每一塊對應一個句柄。

注意:命令pie3x的每一個元素在所有元素的總和中所佔的比例表達出來。若x中的分量和小於1(則所有元素小於1),則認爲x中的值指明三維餅形圖的每一部分的大小。

7-30

    >>x = [1 3 0.5 2.5 2]

    >>ex = [0 1 0 0 0]

    >>pie3(x,ex)

圖形結果爲圖7-30

 

 

 

7.2.3  曲面與網格圖命令

命令1  mesh

功能  生成由X,Y和Z指定的網線面,由C指定的顏色的三維網格圖。網格圖是作爲視點由view3)設定的surface圖形對象。曲面的顏色與背景顏色相同(當要動畫顯示不透明曲面時,這時可用命令hidden控制),或者當畫一個標準的可透視的網線圖時,曲面的顏色就沒有(命令shading控制渲染模式)。當前的色圖決定線的顏色。

用法  mesh(X,Y,Z) 畫出顏色由c指定的三維網格圖,所以和曲面的高度相匹配,

1.若X與Y均爲向量,lengthX)=nlengthY=m,而[mn]=sizeZ),空間中的點 (X(j),Y(I),Z(I,j)) 爲所畫曲面網線的交點,分別地,X對應於z的列,Y對應於z的行。

2.若XY均爲矩陣,則空間中的點 (X(I,j),Y(I,j),Z(I,j))爲所畫曲面的網線的交點。

      mesh(Z) [nm] = sizeZ)得,X =1nY=1m,其中z爲定義在矩形劃分區域上的單值函數。

mesh(,C) 用由矩陣c指定的顏色畫網線網格圖。Matlab對矩陣c中的數據進行線性處理,以便從當前色圖中獲得有用的顏色。

mesh(,PropertyName’,PropertyValue, 對指定的屬性PropertyName設置屬性值PropertyValue,可以在同一語句中對多個屬性進行設置。

h = mesh(返回surface圖形對象句柄。

運算規則:

1.數據XYz的範圍,或者是對當前軸的XLimMode,YLimMode和ZLimMode屬性的設置決定座標軸的範圍。命令aXis可對這些屬性進行設置。

2.參量c的範圍,或者是對當前軸的Clim和ClimMode屬性的設置(可用命令caxis進行設置),決定顏色的刻度化程度。刻度化顏色值作爲引用當前色圖的下標。

3.網格圖顯示命令生成由於把z的數據值用當前色圖表現出來的顏色值。Matlab會自動用最大值與最小值計算顏色的範圍(可用命令caxis auto進行設置),最小值用色圖中的第一個顏色表現,最大值用色圖中的最後一個顏色表現。Matlab會對數據的中間值執行一個線性變換,使數據能在當前的範圍內顯示出來。

7-31

>>[X,Y] = meshgrid(-3:.125:3);

>>Z = peaks(X,Y);

>>mesh(X,Y,Z);

圖形結果爲圖7-31

 

 

命令 surf

功能  在矩形區域內顯示三維帶陰影曲面圖。

用法  surf(Z) 生成一個由矩陣z確定的三維帶陰影的曲面圖,其中 [mn] = sizeZ),而X = 1nY = 1m。高度z爲定義在一個幾何矩形區域內的單值函數,z同時指定曲面高度數據的顏色,所以顏色對於曲面高度是恰當的。

      surf(X,Y,Z) 數據z同時爲曲面高度,也是顏色數據。XY爲定義X座標軸和Y座標軸的曲面數據。若XY均爲向量,lengthX=nlengthY=m,而[m,n]=sizeZ),在這種情況下,空間曲面上的節點爲(X(I),Y(j),Z(I,j))。

      surf(X,Y,Z,C) 用指定的顏色c畫出三維網格圖。Matlab會自動對矩陣c中的數據進行線性變換,以獲得當前色圖中可用的顏色。

      surf(,’PropertyName’,PropertyValue) 對指定的屬性PropertyName設置爲屬性值PropertyValue

      h = surf() 返回一個surface圖形對象句柄給變量h

運算規則:

1.嚴格地講,一個參數曲面是由兩個獨立的變量I、j來定義的,它們在一個矩形區域上連續變化。例如,a<=I<=b,c<=j<=d,三個變量XYZ確定了曲面。曲面顏色由第四參數矩陣C確定。

2.矩形定義域上的點有如下關係:

                           A(I-1,j)

                              |

                  B(I,j-1) ---- C(I,j) ---- D(I,j+1)

                              |

                           E(I+1,j)

這個矩形座標方格對應於曲面上的有四條邊的塊,在空間的點的座標爲[X(J,Y(J,Z),每個矩形內部的點根據矩形的下標和相鄰的四個點連接;曲面上的點只有相鄰的三個點,曲面上四個角上的點只有兩個相鄰點,上面這些定義了一個四邊形的網格圖。

3.曲面顏色可以有兩種方法來指定:指定每個節點的顏色或者是每一塊的中心點顏色。在這種一般的設置中,曲面不一定爲變量XY的單值函數,進一步而言,有四邊的曲面塊不一定爲平面的,而可以用極座標,柱面座標和球面座標定義曲面。

4.命令shading設置陰影模式。若模式爲interpC必須與XYZ同型;它指定了每個節點的顏色,曲面塊內的顏色由附近幾個點的顏色用雙線性函數計算出來的。若模式爲facted(缺省模式)或flatc(I,j)指定曲面塊中的顏色:

                   A(I,j)----------- B (I,j+1)

                     |    C(I,j)     |

                  C(I+1,j) --------- D(I+1,j)

在這種情形下,C可以與XY,和Z同型,且它的最後一行和最後一列將被忽略,換句話說,就是C的行數和列數可以比XYZ1

5.命令surf將指定圖形視角爲view3)。

6.數據XYZ的範圍或者通過對座標軸的屬性XlimMode,YlimMode和ZlimMode的當前設置(可以通過命令axis來設置),將決定座標軸的標籤。

7.參數C的範圍或者通過對座標軸的屬性Clim和ClimMode的設置(可以通過命令caxis來設置),將決定顏色刻度化。刻度化的顏色值將作爲引用當前色圖的下標。

7-32

>>[X,Y,Z] = peaks(30);

>>surf(X,Y,Z)

>>colormap hsv

結果圖形爲圖7-32

 

 

 

命令3  surfc

功能  在矩形區域內顯示三維帶陰影曲面圖,且在曲面下面畫出等高線。

用法  surfc(Z)surfc(X,Y,Z)、 surfc(X,Y,Z,C)、 

      surfc(,’PropertyName’,PropertyValue)

      surfc()、 h = surfc() 

     上面各個使用形式的曲面效果與命令surf的相同,只不過是在曲面下面增加了曲面的等高線而已。

7-33

>>[X,Y,Z] = peaks(30);

>>surfc(X,Y,Z)

>>colormap hsv

圖形結果爲圖7-33

 

 

 

命令 surfl

功能  畫帶光照模式的三維曲面圖。該命令顯示一個帶陰影的曲面,結合了周圍的,散射的和鏡面反射的光照模式。想獲得較平滑的顏色過度,要使用有線性強度變化的色圖(如:graycopperbonepink等)。參數X,YZ確定的點定義了參數曲面的“裏面”和“外面”,若用戶想曲面的“裏面”有光照模式,只要使用:

           surfl(X’,Y’,Z’)    

用法  surfl(Z) 以向量z的元素生成一個三維的帶陰影的曲面,其中陰影模式中的光源的方位、光照係數爲缺省值(見下面)。

      surfl(X,Y,Z) 以矩陣X,YZ生成的一個三維的帶陰影的曲面,其中陰影模式中的光源的方位、光照係數爲缺省值(見下面)。

      surfl(,’light’) 用一個matlab光照對象(light object)生成一個帶顏色、帶光照的曲面,這與用缺省光照模式產生的效果不同。

      surfl(…,’cdata’) 改變曲面顏色數據(color data),使曲面成爲可反光的曲面。

      surfl(,s) 指定光源與曲面之間的方位s,其中s爲一個二維向量[azimuthelevation],或者三維向量[sxsysz]。缺省光源方位爲從當前視角開始,逆時針45℉(度)。

      surfl(X,Y,Z,s,k) 指定反射常係數k,其中k爲一個定義環境光(ambient light)係數(0<=ka<=1)、漫反射(diffuse reflection)係數(0=kb=1〉、鏡面反射(specular reflection)係數(0=ks=1〉與鏡面反射亮度(以相素爲單位)等的四維向量[kakdksshine],缺省值爲k=[0.55 0.6 0.4 10]

      h = surfl(…) 返回一個曲面圖形句柄向量h

7-34

>>[X,Y] = meshgrid(-3:1/8:3);

>>Z = peaks(X,Y);

>>surfl(X,Y,Z);

>>shading interp

>>colormap(gray);

圖形結果爲圖7-34

 

 

命令 waterfall

功能  瀑布圖

用法  waterfall(X,Y,Z) 用所給參數X、Y與Z的數據畫一“瀑布”效果圖。若X與Y都是向量,則X與Z的列相對應,Y與Z的行相對應,即length(X)=Z的列數,length(Y)=Z的行數。參數X與Y定義了x-軸與y-軸,Z定義了z-軸的高度,Z同時確定了顏色,所以顏色能恰當地反映曲面的高度。若想研究數據的列,可以輸入:waterfall(Z’)或waterfall(X’,Y’,Z’)

      waterfall(Z) 畫出一瀑布圖,其中缺省地有:X=1:Z的行數,Y=1:Z的行數,且Z同時確定顏色,所以顏色能恰當地反映曲面高度。

      waterfall(,C) 用比例化的顏色值從當前色圖中獲得顏色,參量C決定顏色的比例,爲此,必須與Z同型。系統使用一線性變換,從當前色圖中獲得顏色。

      h = waterfall(返回patch圖形對象的句柄h,可用於畫出圖形。

7-35

>>[X,Y,Z] = peaks(30);

>>waterfall(X,Y,Z)

圖形結果爲圖7-35

 

 

 

命令 cylinder

功能  生成圓柱圖形。該命令生成一單位圓柱體的x-y-z-軸的座標值。用戶可以用命令surf或命令mesh畫出圓柱形對象,或者用沒有輸出參量的形式而立即畫出圖形。

用法  [X,Y,Z] = cylinder 返回一半徑爲1、高度爲1的圓柱體的x-y-z-軸的座標值,圓柱體的圓周有20個距離相同的點。

      [X,Y,Z] = cylinder® 返回一半徑爲r、高度爲1的圓柱體的x-y-z-軸的座標值,圓柱體的圓周有20個距離相同的點。

      [X,Y,Z] = cylinder(r,n) 返回一半徑爲r、高度爲1的圓柱體的x-y-z-軸的座標值,圓柱體的圓周有指定的n個距離相同的點。

      cylinder(沒有任何的輸出參量,直接畫出圓柱體。

7-36

>>t = 0:pi/10:2*pi;

>>[X,Y,Z] = cylinder(2+(cos(t)).^2);

>>surf(X,Y,Z); axis square

圖形結果爲圖7-36

 

 

 

命令 sphere

功能  生成球體

用法  sphere 生成三維直角座標系中的單位球體。該單位球體由20*20個面。

      sphere(n) 在當前座標系中畫出有n*n個面的球體

      [X,Y,Z] = sphere(n) 返回三個階數爲(n+1)*(n+1)的,直角座標系中的座標矩陣。該命令沒有畫圖,只是返回矩陣。用戶可以用命令surfXY,Z)或meshXY,Z)畫出球體。

7-37

>>[X,Y,Z]=sphere;

>>mesh(X,Y,Z)

>>hidden off

圖形結果爲圖7-37

 

 

7.2.4  三維數據的其他表現形式命令

命令 pcolor

功能  僞彩色圖。該圖爲一矩形單元的、由參數c定義了顏色的陣列,系統通過c中的每相鄰的四點定義的曲面補片而生成一僞彩色圖。是從上面向下觀看的“平面”曲面圖。若用戶使用命令shading facetedshading flat,則每一單元的固定顏色是與之相連的角的顏色有關的。所以,C(i,j)定義了單元的地i行與地j列的顏色。C中的最後一行與最後一列都沒有用上。若用戶使用命令shading interp,則每一單元的顏色是對它的四個頂點的顏色進行一雙線性插值後的顏色,這時c的所有元素都參加了運算。

用法  pcolor(C) 畫一僞彩色圖。C中的元素都線性地映射於當前色圖下標。從C映射到當前的色圖是由命令colormapcaxis定義的。

      pcolor(X,Y,C) 在參數xy指定的位置上畫一由C確定的爲彩色圖。該圖爲一邏輯上爲矩形、帶二維格柵的、頂點在[X(i,j),Y(i,j)]的圖形(若XY爲矩陣時)。參量XY爲指定格柵線的向量或矩陣。若XY爲向量,則X對應於C的列,而y對應於C的行;若XY同爲矩陣,則必須爲同型矩陣。該命令等價於命令:surf(X,Y,0,C),觀察角度爲:view([0,90])。

      h = pcolor(返回一surface圖形對象句柄於h

7-38

>>pcolor(magic(20))

>>colormap(gray(2))

>>axis ij;axis square

圖形結果爲圖7-38

 

 

 

命令 quiver

功能  矢量圖或速度圖

用法  quiver(U,V) 在範圍爲x =1:n和y =1:m的座標系中顯示由UV定義的向量,而[m,n]=size(U)=size(V),這種形式是在一個幾何矩形中畫出UV的,quiver命令本身會自動地畫出這些向量,使之不會重疊。

      quiver(X,Y,U,V) 由向量XY中的分量的任意組合而成的向量與。若XY都是向量lengthX=n,而lengthY=m,而[mn]=sizeU=sizeV),向量X對應於矩陣UV的列向量,而向量Y對應於矩陣UV的行向量。

      quiver(,scale) 自動對向量的長度進行處理。使之不會重疊,當然可以對scale進行取值,若scale=2,則向量長度伸長2倍,若scale=0,則如實畫出向量圖。

      quiver(,LineSpec) 可以指定畫矢量圖用的線型,符號,顏色,quiver命令會在原來的向量圖上畫出記號。

      quiver(,LineSpec,'filled') 對用LineSpec指定的記號進行填充

      h = quiver(返回每個向量圖的句柄

7-39

   >>[z,x,y]=peaks(30);

   >>[Dx,Dy]=gradient(z,0.1,0.1);

   >>quiver(x,y,Dx,Dy)

圖形結果爲圖7-39

 

 

命令 slice

功能  立體切片圖。該命令顯示通過立體圖形的矩形切片圖。

用法  slice(X,Y,Z,V,sx,sy,sz) 顯示三元函數V=V(X,Y,Z)確定的超立體形在x-軸、y-軸與z-軸方向上的若干點(對應若干平面。即若函數V=V(X,Y,Z)中有一變量如X取一定值X0,則函數V=V(X0,Y,Z)變成一立體曲面(只不過是將該曲面通過顏色表示高度V,從而顯示於一平面而已。)的切片圖,各點的座標由參量向量sxsysz指定。參量X、參量Y與參量Z爲三維數組,用於指定立方體V的座標。參量X、Y與Z必須有單調的、正交的間隔(如同用命令meshgrid生成的一樣)。在每一點上的顏色由對超立體 V的三維內插值確定。

      slice(V,sx,sy,sz) 顯示三元函數V=V(X,Y,Z)確定的超立體形在x-軸、y-軸與z-軸方向上的若干點(對應若干平面)的切片圖,各點的座標由數量向量sxsysz指定。其中V爲三維數組(階數爲m*n*p),缺省地有:X = 1:m、Y = 1:n、Z = 1:p。

      slice(V,XI,YI,ZI) 顯示參量矩陣XI、YI與ZI確定的、超立體圖形的切面圖。參量XI、YI與ZI定義了一曲面,同時會在曲面的點上計算超立體V的值。參量XI、YI與ZI必須爲同型矩陣。

      slice(X,Y,Z,V,XI,YI,ZI) 沿着由矩陣XI、YI與ZI定義的曲面畫穿過超立體圖形V的切片。

      slice(,'method') 指定內插值的方法。‘method’爲如下方法之一:‘linear’、

‘cubic’、‘nearest’:

             ‘linear’——指定使用三次線性內插值法(該狀態爲缺省的);

             ‘cubic’——  指定使用三次立方內插值法;

             ‘nearest’——指定使用最近點內插值法。

      h = slice(返回一曲面圖形對象的句柄向量h

命令 axis

功能  座標軸的刻度與外在顯示

用法  axis([xmin xmax ymin ymax]) 設置當前座標軸的x-軸與y-軸的範圍。

      axis([xmin xmax ymin ymax zmin zmax cmin cmax]) 設置當前座標軸的x-軸、y-軸與z-軸的範圍,當前顏色刻度範圍。該命令也同時設置當前座標軸的屬性  Xlim、Ylim與Zlim爲所給參數列表中的最大值和最小值。另外,座標軸屬性XlimMode、YlimMode與ZlimMode設置爲‘manual’。

      v = axis 返回一包含x-軸、y-軸與z-軸的刻度因子的行向量,其中v爲一四維或六維向量,這取決於當前座標爲二維還是三維的。返回的值包含當前座標軸的XLim、Ylim與Zlim屬性值。

      axis auto 設置系統到它的缺省動作——自動計算當前軸的範圍,這取決於輸入參量xyz的數據中的最大值與最小值。同時將當前座標軸的屬性XlimMode、YlimMode與ZlimMode設置爲‘auto’用戶可以指定對某一座標軸進行自動操作。例如:

                 axis ’auto x’  將自動計算x-軸的範圍;

                 axis ’auto yz’ 將自動計算y-軸與z-軸的範圍。

      axis manual axis(axis) 把座標固定在當前的範圍,這樣,若保持狀態(hold)爲on,後面的圖形仍用相同界限。該命令設置了屬性XLimMode、屬性YLimMode與屬性ZlimMode爲manual

      axis tight 把座標軸的範圍定爲數據的範圍,即座標軸中沒有多餘的部分。

      axis fill 該命令用於將座標軸的取值範圍分別設置爲繪圖所用數據在相應方向上的最大、最小值。

      axis ij 使用矩陣座標系:座標原點在左上角、橫座標(j-軸)的值從左到右增加,縱座標(i-軸)的值從上到下增加。

      axis xy使用笛卡兒座標系(缺省):座標原點在左下角、橫座標(x-軸)的值從左到右增加,縱座標(y-軸)的值從下到上增加。

      axis equal 設置座標軸的縱橫比,使在每個方向的數據單位都相同。其中x-軸、y-軸與z-軸將根據所給數據在各個方向的數據單位自動調整其縱橫比。

      axis image 效果與命令axis equal相同,只是圖形區域剛好緊緊包圍圖象數據。

      axis square 設置當前圖形爲正方形(或立方體形),系統將調整x-軸、y-軸與z-軸,使它們有相同的長度,同時相應地自動調整數據單位之間的增加量。

      axis normal 自動調整座標軸的縱橫比,還有用於填充圖形區域的、顯示於座標軸上的數據單位的縱橫比。

7-7顯示由上面三個命令設置的座標軸屬性。

7-7

              命令

座標軸屬性

axis equal

axis normal

axis square

axis tightequal

DataAspectRatioMode

[1 1 1]

沒有設置

沒有設置

[1 1 1]

PlotBoxAspectRatio

manual

auto

auto

Manual

PlotBoxAspectRatioMode

[3 4 4]

沒有設置

[1 1 1]

Auto

Stretch-to-fill

禁止

可行

禁止

禁止

      axis vis3d 該命令將凍結座標系此時的狀態,以便進行旋轉。

      axis off 關閉所用座標軸上的標記、格柵和單位標記。但保留由textgtext設置的對象。

      axis on 顯示座標軸上的標記、單位和格柵。

      [mode,visibility,direction] = axis('state') 返回表明當前座標軸的設置屬性的三個字符串,見表7-8

7-8

輸出參量

返回字符串

說明

Mode

‘’auto’或

’manual’

若XLimMode、YlimMode與ZlimMode都設置爲auto,則modeauto;若XLimMode、YlimMode或者ZlimMode都設置爲manual,則modemanual

Visibility

‘’on’或’off’

 

Direction

‘’xy’或’ij’

7-40

>>x = 0:.025:pi/2;

>>plot(x,exp(x).*sin(2*x),'-m<')

>>axis([0  pi/2  0  5])

圖形結果爲圖7-40

 

 

命令5  hidden

功能  在一網格圖中顯示隱含線條。隱含線條的顯示,實際上是顯示那些從觀察角度觀看沒有被其他物體遮住的線條。

用法  hidden on 對當前圖形打開隱含線條的顯示狀態,使網格圖後面的線條被前面的線條遮住。設置曲面圖形對象的屬性FaceColor爲座標軸背景顏色。這是系統的缺省操作。

      hidden off 對當前圖形關閉隱含線條的顯示

      hidden 在兩種狀態onoff之間切換

7-41

>>mesh(peaks)

>>hidden off

圖形結果爲圖7-41

 

 

 

命令 shading

功能  設置顏色色調屬性。該命令控制曲面與補片等的圖形對象的顏色色調。同時設置當前座標軸中的所有曲面與補片圖形對象的屬性EdgeColor與FaceColor。命令shading設置恰當的屬性值,這取決於曲面或補片對象是表現網格圖或實曲面。

用法  shading flat 使網格圖上的每一線段與每一小面有一相同顏色,該顏色由線段的末端的端點顏色確定;或由小面的、有小型的下標或索引的四個角的顏色確定。

      shading faceted 帶重疊的黑色網格線的平面色調模式。這是缺省的色調模式。

      shading interp 在每一線段與曲面上顯示不同的顏色,該顏色爲通過在每一線段兩邊的、或者爲不同小曲面之間的色圖的索引或真顏色進行內插值得到的顏色。

7-42

>>sphere(16)

>>axis square

>>shading flat

>>title('Flat Shading')

圖形結果爲圖7-42

 

 

 

命令 caxis

功能  顏色座標軸刻度。命令caxis控制着對應色圖的數據值的映射圖。它影響下面對象之一的、用帶索引的顏色數據(CData)與顏色數據映射(CDataMapping)控制的刻度的圖形對象surface、patches與images;它沒有影響帶用顏色數據(CData)或顏色數據映射(CDataMapping)直接設置的顏色的圖形對象surfaceimagespatches。該命令還改變座標軸圖形對象的屬性Clim與ClimMode。

用法  caxis([cmin cmax]) 用指定的最大值與最小值設置顏色範圍。數據值中小於cmin或大於cmax的,將分別地映射於cmincmax;處於cmincmax之間的數據將線性地映射於當前色圖。

      caxis auto 讓系統自動地計算數據的最大值與最小值對應的顏色範圍。這是系統的缺省動作。數據中的正無窮大(Inf)對應於最大顏色值;負無窮大(-Inf)對應於最小顏色值;帶顏色值設置爲NaN的面或者邊界將不顯示。

      caxis manualcaxis(caxis) 凍結當前顏色座標軸的刻度範圍。這樣,當hold設置爲on時,可使後面的圖形命令使用相同的顏色範圍。

      v = caxis 返回一包含當前正在使用的顏色範圍的二維向量v=[cmin cmax]

      caxis(axes_handle,使由參量axis_handle指定的座標軸,而非當前座標軸。

顏色座標軸刻度工作原理:

使用帶索引的顏色數據(Cdata)與顏色數據映射(CdataMapping)的圖形對象surface、patch與image將設置成刻度化的,在每次圖形渲染時,將映射顏色數據值爲當前圖形的顏色。當顏色數據值等於或小於cmin時,將它映射爲當前色圖中的第一個顏色;當顏色數據值等於或大於cmax時,將它映射爲當前色圖中的最後一個顏色;對於處於cmincmax之間的顏色數據(例如c),系統將執行下列線性轉換,以獲得對應當前色圖(它的長度爲m)中的顏色的索引(當前色圖的行指標index):

              index = fix((C-min)/(cmax-cmin)*m)+1

7-43

>>[X,Y,Z] = sphere;

>>C = Z;surf(X,Y,Z,C)

>>caxis([-1 3])

圖形結果爲圖7-43

 

 

 

命令 view

功能  指定立體圖形的觀察點。觀察者(觀察點)的位置決定了座標軸的方向。用戶可以用方位角(azimuth)和仰角(elevation)一起,或者用空間中的一點來確定觀察點的位置。

用法  view(az,el)view([az,el]) 給三維空間圖形設置觀察點的方位角。方位角az與仰角el爲這兩個旋轉角度:做一通過視點與z-軸的平面,與xy平面有一交線,該交線與y-軸的反方向的、按逆時針方向(從z-軸的方向觀察)計算的、單位爲度的夾角,就是觀察點的方位角az。若角度爲負值,則按順時針方向計算;在通過視點與z-軸的平面上,用一直線連接視點與座標原點,該直線與xy平面的夾角就是觀察點的仰角el。若仰角爲負值,則觀察點轉移到曲面下面。

      view([x,y,z]) 在笛卡兒座標系中於點(x,y,z)設置視點。注意:輸入參量只能是方括號的向量形式,而非數學中的點的形式。

      view(2) 設置缺省的二維形式視點。其中az=0,el=90,即從z-軸上方觀看。

      view(3) 設置缺省的三維形式視點。其中az=-37.5,el=30。

      view(T) 根據轉換矩陣T設置視點。其中T爲4*4階的矩陣,如同用命令viewmtx生成的透視轉換矩陣一樣。

     [az,el] = view 返回當前的方位角az與仰角el

     T = view 返回當前的4*4階的轉換矩陣T。

7-44

>>peaks;

>>az = 0;el = 90;

>>view(az, el)

圖形結果爲圖7-44

 

 

 

命令 viewmtx

功能  視點轉換矩陣。計算一個4*4階的正交的或透視的轉換矩陣,該矩陣將一四維的、齊次的向量轉換到一個二維的視平面上(如計算機平面上)。

用法  T = viewmtx(az,el) 返回一與視點的方位角az與仰角el(單位都爲度)對應的正交矩陣,並沒有改變當前視點。

      T = viewmtx(az,el,phi) 返回一透視的轉換矩陣,其中參量phi是單位爲度的透視角度,爲標準化立方體(單位爲度)的對像視角角度與透視扭曲程度。

7-9

Phi的值

說明

0

正交投影

10

類似以遠距離投影

25

類似以普通投影

60

類似以廣角投影

用戶可以通過使用返回的矩陣,用命令view(T)改變視點的位置。該4*4階的矩陣將變換四維的、同次的向量成形式爲(x,y,z,w)的非標準化的向量,其中w不等於1。正交化的x-元素與y-元素組成的向量(x/w,y/w,z/w,1)爲我們所需的二維向量。(注:一四維同次向量爲在對應的三維向量後面增加一個1。例如:[x,y,z,1]爲對應於三維空間中的點[x,y,z]的四維向量。)

      T = viewmtx(az,el,phi,xc) 返回以在標準化的圖形立方體中的點xc爲目標點的透視矩陣(就像相機正對着點xc一樣),目標點xc爲視角的中心點。用戶可以用一三維向量xc=[xc,yc,zc]指定該中心點,每一分量都在區間[01]上。缺省值爲xc=[0 0 0]。

命令10  surfnorm

功能  計算與顯示三維曲面的法線。該命令計算用戶命令surf中的曲面法線。

用法  surfnorm(Z)、surfnorm(X,Y,Z) 畫出一曲面與它的法線圖。其中矩陣Z用於指定曲面的高度值;X與Y爲向量或矩陣,用於定義曲面的xy部分。

      [Nx,Ny,Nz] = surform(…) 返回組成曲面的法線在三個座標軸上的投影分量Nx,Ny與Nz。

7-45

>>[x,y,z] = cylinder(1:10);

>>surfnorm(y,x,z)

>>axis([-12 12 -12 12 -0.1 1])

圖形結果爲圖7-45

 

 


轉載請註明本文地址:MATLAB繪圖與圖形處理(2)
發佈了0 篇原創文章 · 獲贊 104 · 訪問量 78萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章