matlab繪圖與圖形處理(下)
7.3 通用圖形函數命令
7.3.1 圖形對象句柄命令
命令1 figure
功能 創(chuàng )建一個(gè)新的圖形對象。圖形對象為在屏幕上單獨的窗口,在窗口中可以輸出圖形。
用法 figure 用缺省的屬性值創(chuàng )建一個(gè)新的圖形對象。
figure('PropertyName',PropertyValue,…) 對指定的屬性PropertyName用指定的屬性值PropertyValue(屬性名與屬性值成對出現)創(chuàng )建一個(gè)新的圖形窗口,對于那些沒(méi)有指定的屬性,則用缺省值。屬性名與有效的屬性值見(jiàn)下表。
figure(h) 1. 若h為一個(gè)已經(jīng)存在的圖形的句柄,則figure(h)使由h標記的圖形成為當前圖形,使它可見(jiàn),且在屏幕上把它顯示到所有圖形之前。當前圖形為圖像輸出的地方。
2. 若h不是已經(jīng)存在圖形的句柄,但是為一整數,則該命令生成一圖形窗口,同時(shí)把該窗口的句柄賦值為h;若h不是一圖形窗口的句柄,也不是一整數,則返回一錯誤信息。
h = figure(…) 返回圖形窗口對象的句柄給h。
表7-10
屬性名
屬性說(shuō)明
有效屬性值
窗口位置
Position
圖形窗口的位置與大小
有效值:四維向量[left,bottom,
width,height]
缺省值:決定于顯示
Units
用于解釋屬性Position的單位
有效值:inches(英寸)
centimeters(厘米)
normalized(標準化單位,認為窗口為一長(cháng)寬都是1)
points(點(diǎn))
pixels(像素)
characters(字符)
缺省值:pixels
指定類(lèi)型與外在顯示
Color
窗口的背景顏色
有效值:ColorSpec(有效的顏色 參數)
缺省值:取決于顏色表(參見(jiàn)命令colordef)
Menubar
轉換圖形窗口菜單條的“開(kāi)”與“關(guān)”
有效值:none、figure
缺省值:figure
Name
顯示圖形窗口的標題
有效值:任意字符串
缺省值:‘’(空字符串)
NumberTitle
標題欄中是否顯示’Figure No. n’,其中n為圖形窗口的編號
有效值:on、off
缺省值:on
Resize
指定圖形窗口是否可以通過(guò)鼠標改變大小
有效值:on、off
缺省值:on
SelectionHighlight
當圖形窗口被選中時(shí),是否突出顯示
有效值:on、off
缺省值:on
Visible
確定圖形窗口是否可見(jiàn)
有效值:on、off
缺省值:on
WindowStyle
指定窗口為標準窗口還是典型窗口
有效值:normal(標準窗口)、
modal(典型窗口)
缺省值:normal
控制色圖
Colormap
圖形窗口的色圖
有效值:m*3階的RGB顏色矩陣
缺省值:jet色圖
Dithermap
用于真顏色數據以偽顏色顯示的色圖
有效值:m*3階的RGB顏色矩陣
缺省值:有所有顏色的色圖
DithermapMode
是否使用系統生成的抖動(dòng)色圖
有效值:auto、manual
缺省值:manual
FixedColors
不是從色圖中獲得的顏色
有效值:m*3階的RGB顏色矩陣
缺省值:無(wú)(只讀模式)
MinColormap
系統顏色表中能使用的最少顏色數
有效值:任一標量
缺省值:64
ShareColors
允許MATLAB共享系統顏色表中的顏色
有效值:on、off
缺省值:on
指定透明度
Alphamap
圖形窗口的α色圖,用于設定透明度。
有效值:m*1維向量,每一分量在[0 1]之間
缺省值:64*1維向量
指定渲染模式
BackingStore
打開(kāi)或關(guān)閉屏幕像素緩沖區
有效值:on、off
缺省值:on
DoubleBuffer
對于簡(jiǎn)單的動(dòng)畫(huà)渲染是否使用快速緩沖
有效值:on、off
缺省值:off
Renderer
用于屏幕和圖片的渲染模式
有效值:painters、zbuffer、OpenGL
缺省值:系統自動(dòng)選擇
關(guān)于圖形窗口的一般信息
Children
顯示于圖形窗口中的任意對象句柄
有效值:句柄向量
FileName
命令guide使用的文件名
有效值:字符串
Parent
圖形窗口的父對象:根屏幕
有效值:總是0(即根屏幕)
Selected
是否顯示窗口的“選中”狀態(tài)
有效值:on、off
缺省值:on
Tag
用戶(hù)指定的圖形窗口標簽
有效值:任意字符串
缺省值:' '(空字符串)
Type
圖形對象的類(lèi)型(只讀類(lèi)型)
有效值:'figure'
UserData
用戶(hù)指定的數據
有效值:任一矩陣
缺省值:[](空矩陣)
RendererMode
缺省的或用戶(hù)指定的渲染程序
有效值:auto、manual
缺省值:auto
關(guān)于當前狀態(tài)的信息
CurrentAxes
在圖形窗口中的當前坐標軸的句柄
有效值:坐標軸句柄
CurrentCharacter
在圖形窗口中最后一個(gè)輸入的字符
有效值:?jiǎn)蝹€(gè)字符
CurrentOject
圖形窗口中的當前對象的句柄
有效值:圖形對象句柄
CurrentPoint
圖形窗口中最后單擊的按鈕的位置
有效值:二維向量[x-coord,
y-coord]
SelectionType
鼠標選取類(lèi)型
有效值:normal、extended、alt、open
回調程序的執行
BusyAction
指定如何處理中斷調用程序
有效值:cancel、queue
缺省值:queue
ButtonDownFcn
當在窗口中空閑點(diǎn)按下鼠標按鈕時(shí),執行的回調程序
有效值:字符串
缺省值:' '(空字符串)
CloseRequestFcn
當執行命令關(guān)閉時(shí),定義一回調程序
有效值:字符串
缺省值:closereq
CreateFcn
當打開(kāi)一圖形窗口時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
DeleteFcn
當刪除一圖形窗口時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
Interruptible
定義一回調程序是否可中斷
有效值:on、off
缺省值:on(可以中斷)
KeyPressFcn
當在圖形窗口中按下一鍵時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
ResizeFcn
當圖形窗口改變大小時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
UIContextMenu
定義與圖形窗口相關(guān)的菜單
有效值:屬性UIContrextmenu的句柄
WindowButtonDownFcn
當在圖形窗口中按下鼠標時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
WindowButtonMotionFcn
當將鼠標移進(jìn)圖形窗口中時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
WindowButtonUpFcn
當在圖形窗口中松開(kāi)按鈕時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
訪(fǎng)問(wèn)對象的控制
IntegerHandle
指定使用整數或非整數圖形句柄
有效值:on、off
缺省值:on(整數句柄)
HandleVisiblity
指定圖形窗口句柄是否可見(jiàn)
有效值:on、callback、off
缺省值:on
HitTest
定義圖形窗口是否能變成當前對象(參見(jiàn)圖形窗口屬性CurrentObject)
有效值:on、off
缺省值:on
NextPlot
在圖形窗口中定義如何顯示另外的圖形
有效值:replacechildren、add、replace
缺省值:add
定義鼠標指針
Pointer
選取鼠標記號
有效值:crosshair、arrow、topr、watch、topl、botl、botr、circle、cross、fleur、left、right、top、fullcrosshair、bottom 、ibeam、custom
缺省值:arrow
PointerShapeCData
定義鼠標外形的數據
有效值:16*16階矩陣
缺省值:將鼠標設置為'custom'且可見(jiàn)
PointerShapeHotSpot
設置鼠標活躍的點(diǎn)
有效值:二維向量[row,column]
缺省值:[1 1]
例7-46
>>scrsz = get(0,'ScreenSize');
>>figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])
執行上面的語(yǔ)句,會(huì )在屏幕的左上角生成一沒(méi)有任何符號的窗口。
命令2 line
功能 生成線(xiàn)(line)對象。命令line在當前坐標軸中生成一個(gè)線(xiàn)對象。用戶(hù)可以指定線(xiàn)的顏色,寬度,類(lèi)型和標記符號等其他特性。
命令line 有兩種形式:
1.自動(dòng)循環(huán)使用顏色和類(lèi)型。當用戶(hù)用非正式語(yǔ)法來(lái)指定矩陣坐標數據:line(X,Y,Z),Matlab將循環(huán)使用由坐標軸ColorOrder和LineStyle指定的顏色順序和類(lèi)型順序。
2.純粹低級操作。當用戶(hù)用屬性名和屬性值調用命令line:
line(‘XData’,x,’YData’,y,’ZData’,z)
Matlab將在當前用缺省的顏色(參見(jiàn)命令colordef的使用)畫(huà)出線(xiàn)對象。注意一點(diǎn)的是,用戶(hù)不能在命令line的低級形式中使用矩陣數據。
用法 line(X,Y) 在當前的坐標軸中畫(huà)出由向量x和y定義的線(xiàn)條。若x與y為同型的矩陣,則對于x,y的每一列畫(huà)出一線(xiàn)條。
line(X,Y,Z) 在三維空間中畫(huà)出由x,y,z定義的線(xiàn)條。
line(X,Y,Z,'PropertyName',PropertyValue,…) 畫(huà)出由參數x,y,z確定的線(xiàn)條,其中對指定屬性PropertyName設置為PropertyValue,其他沒(méi)有指定屬性用缺省值。屬性 LineStyle和Marker參見(jiàn)命令plot。
line('PropertyName',PropertyValue,…) 對屬性用相應的輸入參數來(lái)設置而畫(huà)出線(xiàn)條。這是命令line的低級使用形式,此時(shí)不接受矩陣參數。除了該情形,其他形式都接受矩陣參數。
h = line(…) 返回每一條線(xiàn)的線(xiàn)對象對應的句柄向量。
表7-11
屬性名
說(shuō)明
有效屬性值
定義對象的數據
Xdata
定義線(xiàn)條的x-軸坐標參量
有效值:向量或矩陣
缺省值:[0 1]
Ydata
定義線(xiàn)條的y-軸坐標參量
有效值:向量或矩陣
缺省值:[0 1]
Zdata
定義線(xiàn)條的z-軸坐標參量
有效值:向量或矩陣
缺省值:[0 1]
定義線(xiàn)型與數據點(diǎn)標記符
LineStyle
定義線(xiàn)條的類(lèi)型
有效值:-、--、:、、-.、 none
缺省值:-(實(shí)線(xiàn))
LineWidth
定義線(xiàn)條的寬度(以磅為單位)
有效值:一標量
缺省值:0.5磅
Marker
定義標記數據點(diǎn)的標記符號
有效值:13種類(lèi)型之一
缺省值:none
MarkerEdgeColor
定義標記顏色或可填充標記的邊界顏色
有效值: auto、none、 ColorSpec
缺省值:auto
MarkerFaceColor
定義封閉形標記的填充顏色
MarkerSize
定義標記大小
有效值:標量(磅)
缺省值:6(磅)
控制線(xiàn)條的顯示
Clipping
坐標軸矩形區域是否可剪輯
有效值:on、off
缺省值:on
EraseMode
定義顯示與擦除線(xiàn)條的方法(對于動(dòng)畫(huà)顯示)
有效值:normal、none、
xor、background
缺省值:normal
SelectionHighlight
當線(xiàn)條被選中時(shí),是否突出顯示
有效值:on、off
缺省值:on
Visible
定義線(xiàn)條是否可見(jiàn)
有效值:on、off
缺省值:on
Color
定義線(xiàn)條顏色
有效值:ColorSpec
對象訪(fǎng)問(wèn)的控制
HandleVisibility
定義線(xiàn)條句柄對其他函數是否可見(jiàn)
有效值:on、off、callback
缺省值:on
HitTest
定義線(xiàn)條能否成為當前對象
有效值:on、off
缺省值:on
關(guān)于線(xiàn)條的一般信息
Children
線(xiàn)條沒(méi)有子對象
有效值:[](空矩陣)
Parent
線(xiàn)條對象的父對象為坐標軸對象
有效值:坐標軸句柄
Selected
是否顯示線(xiàn)條的“選中”狀態(tài)
有效值:on、off
缺省值:on
Tag
用戶(hù)定義的標簽
有效值:任一字符串
缺省值:’’(空字符串)
Type
圖形對象的類(lèi)型(只讀類(lèi)型)
有效值:'line'
UserData
用戶(hù)定義的數據
有效值:任一矩陣
缺省值:[](空矩陣)
與回調程序執行有關(guān)的屬性
BusyAction
定義如何處理回調中斷程序
有效值:cancel、queue
缺省值:queue
ButtonDownFcn
當在線(xiàn)條上按下鼠標時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
CreateFcn
當生成線(xiàn)條時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
DeleteFcn
當刪除線(xiàn)條時(shí),定義一回調程序
有效值:字符串
缺省值:' '(空字符串)
Interruptible
定義回調程序是否可中斷
有效值:on、off
缺省值:on(可中斷)
UIContextMenu
定義與線(xiàn)條相關(guān)的菜單
有效值:UIContextMenu的句柄
例7-47
>>t = 0:pi/20:2*pi;
>>hline1 = plot(t,exp(t).*sin(t),'k');
>>hline2 = line(t+.06,exp(t).*sin(t),'LineWidth',4,'Color',[.8 .8 .8]);
>>set(gca,'Children',[hline1 hline2])
生成圖形為圖7-46。
圖7-46 命令line畫(huà)的函數圖
例7-48
圖7-47 隨機直線(xiàn)圖
生成隨機直線(xiàn)圖:
>>line(rand(4,2),rand(4,2),rand(4,1))
>>line(rand(1,4),rand(1,4),rand(1,4))
>>line(rand(4,1),rand(4,1),rand(4,1))
>>line(rand(2,4),rand(2,4),rand(1,4))
>>line(rand(4,2),rand(4,2),rand(4,1))
生成圖形為圖7-47。
命令3 patch
功能 生成補片圖形對象。該命令為生成補片圖形對象的低級圖形函數。補片為一個(gè)或多個(gè)多邊形,多邊形的頂點(diǎn)為坐標中的點(diǎn)。用戶(hù)可以指定補片的顏色與光照模式。
用法 patch(X,Y,C) 在當前坐標軸中增加二維帶填充模式的補片。參量X,Y確定頂點(diǎn)的位置。若X,Y為矩陣(同型或不同型),系統按列生成多個(gè)多邊形。若x,y沒(méi)有定義一封閉的多邊形,則命令自動(dòng)地將多邊形封閉。參量x與y可以定義凹的或自身交叉的多邊形??墒?,一個(gè)不可分隔的補片的邊界自身交叉,則不能完整填充。在這種情況下,最好是將多邊形分解成幾個(gè)小的、自身沒(méi)有交叉的多邊形。參量c指定每一補片的顏色,它可以為簡(jiǎn)單的ColorSpec,每面一顏色或每一頂點(diǎn)一顏色。若c為三維列向量,它將被認為是一直接指定的RGB顏色。
patch(X,Y,Z,C) 生成三維的補片對象。
patch(FV) 用結構FV生成一補片。結構FV包含這些域名vertices,faces和可選的facevertecdata,這些域名對應于補片的Vertices屬性、Faces屬性、FaceVertexCData屬性。
patch(…,C,'PropertyName',PropertyValue…) 在二維(X,Y)或三維(X,Y,Z)空間中對補片指定的屬性PropertyName設置為PropertyValue。
patch('PropertyName',PropertyValue…) 對所有指定的多個(gè)屬性PropertyName設置為相應的值PropertyValue。該命令形式可以使用戶(hù)免除顏色的指定,因為系統將使用缺省的面顏色和邊界顏色,除非用戶(hù)準確地對屬性FaceColor與EdgeColor進(jìn)行設置。該命令形式也允許用戶(hù)通過(guò)對屬性Faces與Vertices的設置來(lái)代替x-,y-與z-軸的輸入。
handle = patch(…) 返回命令patch生成的補片對象句柄。
說(shuō)明 函數patch不象其他的高級的區域生成函數,例如函數fill或area,它沒(méi)有檢測圖形窗口與坐標軸的屬性NextPlot的設置情形。它只是簡(jiǎn)單地在當前坐標軸中添加補片對象而已。
有兩種指定顏色的補片屬性名:
(1)Cdata——當指定x-,y-與z-軸坐標(XData,YData,ZData)時(shí)使用;
(2)FaceVertexCData——當指定多邊形的頂點(diǎn)與連接矩陣時(shí)使用。
以上兩個(gè)屬性接受顏色數據作為索引顏色或者是真顏色(RGB)。其中索引顏色數據 能代表當前色圖的直接索引或者代表映射到整個(gè)色圖的線(xiàn)性數據的比例數值。
命令4 surface
功能 生成面對象。該命令是生成面圖形對象的低級函數。面對象為由矩陣元素的A(I,j)所在的行下標I為x-坐標,所在的列下標j為y-坐標,元素值為z-坐標確定的點(diǎn)生成的空間多邊形。
用法 surface(Z) 畫(huà)出由矩陣z確定的曲面,其中z為定義在一幾何矩形區域上的單值函數。
surface(Z,C) 畫(huà)出顏色由c指定的、面由z指定的空間曲面。
surface(X,Y,Z) 曲面由參數x,y,z確定,顏色參數c=z,因此顏色能恰當地反映曲面的高度。
surface(X,Y,Z,C) 曲面由參數x,y,z確定,顏色由參數c確定。
Surface(x,y,Z) 參數x與y為向量,若[m,n]=size(z),則要求length(x)=n,length(y)=m,面上的點(diǎn)由(x(j),y(i),z(I,j))確定。
Surface(x,y,Z,C) 曲面確定如上情形,顏色由參數c確定。
surface(…'PropertyName',PropertyValue,…) 對指定的曲面屬性PropertyName指定為PropertyValue,對曲面進(jìn)行細微控制。
h = surface(…) 返回生成面對象的句柄。
命令5 image
功能 顯示圖片對象。該命令通過(guò)對矩陣c中每一個(gè)元素(每一元素作為引用圖形色圖下標或直接給出RGB值)的解釋而生成一個(gè)圖片對象。Image命令有兩種使用格式:
1.一個(gè)調用命令newplot的高級函數,可以確定在何處放置圖片與坐標軸的范圍為剛好圍住圖片;使剛生成的圖片放置在坐標軸的刻度線(xiàn)與格柵線(xiàn)之上;屬性Ydir設置為rervse;屬性View為[0 90]。
2.一個(gè)增加圖片到當前坐標軸的低級命令,而沒(méi)有調用命令newplot,在低級使用形式中,只能對指定屬性進(jìn)行設置操作。
用戶(hù)在命令的輸入參量中可以輸入屬性名/屬性值,結構數組,細胞數組等。
用法 image(C) 把C作為一圖片進(jìn)行顯示。C中的每一個(gè)元素指定了一個(gè)“圖片”矩形中的相應部分的顏色。
image(x,y,C) 在(x,y)確定的位置上畫(huà)C的元素。其中x,y都為2維矩陣,分別指定x軸與y軸的范圍,其效果與image(C)相同,只不過(guò)是進(jìn)行了恰當的比例縮放。
image(x,y,C,'PropertyName',PropertyValue,…) 該形式為指定屬性名/屬性值的高級使用形式,在執行該命令之前,先執行命令newplot。
image('PropertyName',PropertyValue,…) 該形式為低級使用形式,它只接受屬性名/屬性值的輸入。
圖7-48
handle = image(…) 返回剛生成的圖片對象的句柄。用戶(hù)可以從上面的任何形式的調用后獲得圖片句柄。
例7-49
>>load clown
>>image(X,'CDataMapping','scaled')
>>colormap(map)
圖形結果為圖7-48。
命令6 uicontrol
功能 生成用戶(hù)控制圖形對象(用戶(hù)界面控制)。也通過(guò)該命令運行圖形用戶(hù)界面。當對象被選中時(shí),一般會(huì )執行相應的操作。系統支持多種控件,每一種都有不同的作用:
校驗框——當單擊檢驗框時(shí),會(huì )執行一操作。該組件對于提供用戶(hù)多個(gè)獨立的選擇是很有用的。要激活一校驗框,只需用鼠標單擊該組件即可,且選中的狀態(tài)在組件上顯示出來(lái)。
可編輯文本框——允許用戶(hù)輸入與修改文本文字的區域。當用戶(hù)想把文字作為 輸入時(shí),可使用該組件。若一可編輯文本框有焦點(diǎn),則單擊文本框的菜單欄不會(huì )執行任何操作。因此,在單擊菜單條后,語(yǔ)句 get(edit_handle,’String’)并沒(méi)有返回當前編輯框中的內容。因為系統必須執行回調函數來(lái)改變屬性 string的值,即使屏幕上顯示的文字已經(jīng)改變。
框架——該組件為一封閉的、可見(jiàn)的、圖形窗口區域??蚣苣苁挂挥脩?hù)圖形界面中相關(guān)的控制組件能容易理解??蚣軟](méi)有相關(guān)的回調程序。只有控制組件能在框架中顯示??蚣懿皇峭该鞯?,因此用戶(hù)定義的組件先后順序決定了組件是否被框架遮住或可見(jiàn)。屬性Stacking order決定了控制組件的顯示順序:第一個(gè)定義的組件最先顯示,后面定義的控制組件則覆蓋已經(jīng)存在的組件。若用戶(hù)要用一框架包圍一些組件,則必須第一個(gè)定義框架。
列表框——顯示一些項目的列表(用命令string設置),且允許用戶(hù)選擇一個(gè)或多個(gè)項目。屬性Min與Max控制著(zhù)選擇的模式。屬性Value顯示可選擇的項目與包含著(zhù)字符串列表中項目的索引;對于選擇了多個(gè)項目則用向量表示。在任何的能改變屬性Value值的、鼠標松開(kāi)的操作之后,系統MATLAB將馬上執行列表框的回調函數。因此,用戶(hù)有必要增加一“Done”按鈕,用于推遲當要多次選擇項目時(shí)的操作。在執行列表框回調函數Callback屬性之前,列表框中項目的選擇有單擊或雙擊之分,對應于將圖形窗口屬性SelectionType設置為normal或open。
彈出菜單——當組件被按下時(shí),打開(kāi)且顯示一選擇列表(用命令string設置)。當沒(méi)有打開(kāi)時(shí),該組件顯示當前的選擇項。該組件對于用戶(hù)想給其他用戶(hù)提供一系列的互斥的選擇項,又不想占用太多的區域。
普通按鈕——當該組件被按下時(shí),將執行一操作。要激活一按鈕,只需在按鈕上按下鼠標按鈕。
單選按鈕——該組件與校驗框相類(lèi)似,但它包含幾個(gè)互斥的、而且相關(guān)的選項(例如在任意時(shí)刻,只能選擇一個(gè)狀態(tài))。要激活某一單選按鈕,只需在該組件上按下鼠標即可。被選中的組件同時(shí)顯示出來(lái)。
滑塊——該組件允許用戶(hù)通過(guò)移動(dòng)某一范圍之內的滑塊來(lái)輸入一指定的數值。用戶(hù)要移動(dòng)一滑塊,只需在滑塊上按下鼠標不放,且在滑塊方向上移動(dòng);或者是在滑槽內單擊鼠標;或者是單擊滑塊條上的箭頭。當松開(kāi)鼠標后,滑塊所在位置將與一數值對應。用戶(hù)可以設置滑塊的最大值、最小值與當前值等。
靜態(tài)文本框——顯示文本行。靜態(tài)文本經(jīng)常作為其他控制對象標簽,以提供其他用戶(hù)相關(guān)信息,或者是顯示一滑塊的數值。其他用戶(hù)不能交互地改變靜態(tài)文本,因此對于靜態(tài)文本,沒(méi)有相關(guān)的回調函數。
觸發(fā)按鈕——當該組件被單擊且顯示出它們的狀態(tài)(on或者off)時(shí),控制是否執行回調函數。
用法 handle = uicontrol(parent) 在父對象parent上生成一用戶(hù)圖形控制界面。用戶(hù)界面控制對象都是圖形窗口的子對象,所以當窗口中沒(méi)有坐標軸時(shí),同樣可以放置控制組件于圖形窗口中。
handle = uicontrol(…,'PropertyName',PropertyValue,…) 參量PropertyName為屬性名,參量PropertyValue可為結構數組或者為單元數組,同時(shí)隨意地返回剛生成的對象的句柄。當然用戶(hù)可以通過(guò)命令set與get來(lái)設置與詢(xún)問(wèn)生成對象的屬性值。
附:表7-12列出所有的用于命令uicontrol對象的屬性名。每一屬性名當作一描述該屬性的鏈接。
表7-12
屬性名
屬性名含義
屬性值
控制控件類(lèi)型與顯示
BackgroundColor
對象的背景顏色
有效值:ColorSpec
缺省值:與系統有關(guān)
Cdata
顯示于對象之上的真顏色圖片
有效值:矩陣
ForegroundColor
文本字體的顏色
有效值:ColorSpec
缺省值:[0 0 0](黑色)
SelectionHighlight
當對象被選中時(shí)突出顯示
有效值:on、off
缺省值:on
String
用戶(hù)控制界面的標簽,也是列表框與彈出菜單中的項目
有效值:任意有效的字符串
Visible
用戶(hù)界面控制是否可見(jiàn)
有效值:on、off
缺省值:on
關(guān)于控件對象的一般信息
Children
用戶(hù)界面控制界面沒(méi)有子對象
Enable
用戶(hù)界面控制是否可用
有效值:on、inactive、off
缺省值:on
Parent
用戶(hù)界面控制對象的父對象
有效值:圖形窗口標量句柄
Selected
對象是否為選中狀態(tài)
有效值:on、off
缺省值:off
SliderStep
滑塊步長(cháng)尺度
有效值:二維向量
缺省值:[0.001 0.1]
Style
用戶(hù)界面控制對象的類(lèi)型
有效值:pushbutton、edit、togglebutton、slider、text、radiobutton、popupmenu 、listbox、frame
缺省值:pushbutton
Tag
由用戶(hù)指定的對象的標記符
有效值:任意有效字符串
TooltipString
對象的工具提示
有效值:任意有效字符串
Type
圖形對象的類(lèi)型
有效值:字符串(只讀)
缺省值:uicontrol
UserData
用戶(hù)指定的數據
有效值:矩陣
控制控件對象的位置
Position
用戶(hù)界面控制對象的大小與位置
有效值:位置矩形
缺省值:[20 20 60 20]
Units
解釋屬性position向量的單位
有效值:pixels、inches、character、normalized、points、centimeters
缺省值:pixels
控制字體與標簽
FontAngle
字符的傾斜度
有效值:normal、italic、oblique
缺省值:normal
FontName
字體系列名稱(chēng)
有效值:字符串
缺省值:與系統有關(guān)
FontSize
字體大小
有效值:一標量
缺省值:與系統有關(guān)
FontUnits
字體大小單位
有效值:pixels、normalized 、inches、centimeters、points
缺省值:points
FontWeight
文本字體的磅值
有效值:light、normal、demi、bold
缺省值:normal
HorizontalAlignment
標簽字符串的對齊方式
有效值:left、center、left
缺省值:決定于用戶(hù)界面控制的對象
String
用戶(hù)控制界面的標簽,也是列表框與彈出菜單中的項目
有效值:字符串
控制回調函數的執行
BusyAction
回調函數中斷方式
有效值:cancel、queue
缺省值:queue
ButtonDownFcn
當按鈕按下時(shí)執行的回調函數
有效值:字符串
Callback
控制操作
有效值:字符串
CreateFcn
在對象生成過(guò)程中執行的回調函數
有效值:字符串
DeleteFcn
在對象刪除過(guò)程中執行的回調函數
有效值:字符串
Interruptible
回調函數中斷的模式
有效值:on、off
缺省值:on
UIContextMenu
與界面控制中的對象相關(guān)的菜單(如按下鼠標右鍵)
有效值:句柄
關(guān)于當前狀態(tài)的一般信息
ListboxTop
第一個(gè)顯示于列表框中的項目的索引
有效值:標量
缺省值:[1]
Max
最大值(與用戶(hù)界面控制對象有關(guān))
有效值:標量
缺省值:與系統有關(guān)
Min
最小值(與用戶(hù)界面控制對象有關(guān))
有效值:標量
缺省值:與系統有關(guān)
Value
用戶(hù)界面控制對象的當前值
有效值:標量或向量
缺省值:與系統有關(guān)
控制組件的訪(fǎng)問(wèn)
HandleVisibility
句柄是否可從命令窗口中與GUIs中訪(fǎng)問(wèn)
有效值:on、callback、off
缺省值:on
HitTest
組件是否可由鼠標單擊選中
有效值:on、off
缺省值:on
命令7 uimenu
功能 生成圖形窗口的菜單中的層次的菜單與下一級子菜單。即增加新的菜單于已經(jīng)存在的菜單后面,當一菜單項被選中時(shí),該菜單項與它的下一級菜單也將顯示。也可用該命令生成與組件相關(guān)的菜單。
用法 handle = uimenu('PropertyName',PropertyValue,…) 在當前圖形窗口菜單條上用指定的屬性PropertyName與相應的屬性值PropertyValue創(chuàng )建一菜單,同時(shí)將該菜單的句柄賦給 handle。其中兩個(gè)輸入參量可以是結構數組或者是單元數組。用戶(hù)界面菜單的回調函數屬性定義了當用戶(hù)激活菜單項時(shí),進(jìn)行的響應操作。
uimenu('PropertyName',PropertyValue,…) 效果同上,但不返回句柄值。
handle = uimenu(parent,'PropertyName',PropertyValue,…) 生成一父菜單的子菜單,或者是生成由parent指定的相關(guān)菜單中的菜單項目。若parent不是另外的用戶(hù)界面菜單對象或用戶(hù)界面相關(guān)菜單對象,而是一圖形窗口,則系統將生成該圖形窗口菜單條上的新的菜單。同時(shí)將生成的菜單賦值給句柄handle。
uimenu(parent,'PropertyName',PropertyValue,…) 效果同上,但不返回菜單的句柄。
附:表7-13列出了所有對uimenu對象有用的屬性,分別按功能進(jìn)行了分類(lèi)。每一屬性名作為該屬性描述的索引。
表7-13
屬性名
屬性名描述
屬性值
控制控件類(lèi)型與顯示
Checked
菜單檢查記號
有效值:on、off
缺省值:off
ForegroundColor
文本的顏色
有效值:ColorSpec
缺省值:黑色[0 0 0]
Label
菜單標簽
有效值:任何字符串
Separator
分隔線(xiàn)模式
有效值:on、off
缺省值:off
SelectionHighlight
對象選中時(shí)是否突出顯示
有效值:on、off
缺省值:on
Visible
用戶(hù)界面菜單是否可見(jiàn)
有效值:on、off
缺省值:on
關(guān)于對象的一般信息
Acceleratro
鍵盤(pán)等價(jià)字符
有效值:任何的字符
Children
子菜單的句柄
有效值:句柄向量
Enable
用戶(hù)界面菜單是否可用
有效值:on、off
缺省值:on
Parent
用戶(hù)界面菜單的父對象
有效值:句柄
Tag
用戶(hù)指定的對象標記符
有效值:任何字符串
Type
圖形對象類(lèi)型
有效值:字符串read-only
缺省值:uimenu
UserData
用戶(hù)指定數據
有效值:任何矩陣
控制對象的位置
Position
用戶(hù)界面菜單的相對位置
有效值:標量
缺省值:[1]
控制回調程序的執行
BusyAction
回調程序的中斷
有效值:cancel、queue
缺省值:queue
ButtoDownFcn
按鈕按下回調程序
有效值:字符串
Callback
控制操作
有效值:字符串
CreateFcn
在對象生成期間執行的回調程序
有效值:字符串
DeleteFcn
在對象刪除期間執行的回調程序
有效值:字符串
Interruptible
回調程序中斷模式
有效值:on、off
缺省值:on
控制對象的訪(fǎng)問(wèn)
HandleVisibility
是否可從命令行上訪(fǎng)問(wèn)圖形用戶(hù)界面
有效值:on、callback、off
缺省值:on
HitTest
是否可用鼠標選擇
有效值:on、off
缺省值:on
7.3.2 軸的產(chǎn)生和控制命令
命令1 axes
功能 創(chuàng )建坐標軸圖形對象。該命令是創(chuàng )建坐標軸圖形對象的低級函數命令。
用法 axes 在當前圖形窗口中用缺省的屬性值創(chuàng )建一坐標軸圖形對象。
axes('PropertyName',PropertyValue,…) 用參量'PropertyName'指定的屬性名與用參量PropertyValue指定的屬性值創(chuàng )建一坐標軸。對于沒(méi)有指定的屬性名,系統則使用缺省的屬性值。
axes(h) 使已經(jīng)存在的坐標軸h成為當前的坐標軸。同時(shí)使坐標軸h為圖形窗口中的所有子對象屬性(Children property)的第一坐標軸,也使圖形窗口的CurrentAxes屬性為h。當前坐標軸是圖形函數image、line、patch、 surface與text等命令輸出圖形對象的目的地。
h = axes(…) 返回已經(jīng)創(chuàng )建的坐標軸對象的句柄。
命令2 cla
功能 清除當前坐標軸。該命令在命令窗口中執行與在回調程序中執行效果是一樣的,即它不能區別由callback設置的屬性 HandleVisibility,也就是說(shuō),當它從一回調程序中執行時(shí),命令cla僅僅刪除屬性HandleVisibility為on的圖形對象。
用法 cla 清除當前坐標軸中所有句柄為不隱藏(例如,圖形對象屬性HandleVisibility設置為on)的圖形對象。
cla reset 無(wú)條件地清除當前坐標軸中所有圖形對象,且重新設置坐標軸的屬性,(除了屬性Position和Units)。
命令3 gca
功能 獲取當前坐標軸句柄。
用法 h=gca 返回當前圖形窗口中的坐標軸句柄。若坐標軸不存在,系統則生成一坐標軸同時(shí)返回它的句柄。用戶(hù)不想得到上面的結果,可以輸入get(gcf,’CurrentAxes’)。
當前坐標軸為用戶(hù)創(chuàng )建坐標軸以下子對象的目的地。有許多圖形命令可以在當前坐標軸中畫(huà)出圖形對象,如:plot,text,surf等。改變了當前窗口,相應地改變了當前坐標軸。
7.3.3 圖形句柄操作命令
命令1 gco
功能 返回當前對象的句柄。“當前對象”為最后用鼠標單擊的對象,除了命令uimenus之外。若鼠標沒(méi)有單擊到一圖形對象之下的子對象,則該圖形對象為“當前對象”。系統會(huì )把當前圖形對象的句柄存放于圖形的屬性CurrentObject之中。當前圖形窗口中的當前對象并非總是那些它們的回調函數,而是正在執行的對象。其他函數的回調中斷函數可以改變當前對象或者甚至是當前圖形窗口。一些回調函數,如生成命令CreateFcn、刪除命令DeleteFcn 與用戶(hù)界面菜單命令Callback等就沒(méi)有改變當前圖形窗口或者當前對象。
用法 h = gco 返回當前對象的句柄給h。
h = gco(figure_handle) 返回指定窗口figure_handle中的當前對象的值。
命令2 get
功能 獲取對象屬性。
用法 get(h) 返回由句柄h指定的圖形對象的所有屬性與相應的當前屬性值;
get(h,'PropertyName') 返回由句柄h指定的圖形對象的指定屬性PropertyName的屬性值。
<m-by-n value cell array> = get(H,<property cell array>) 返回由m個(gè)圖形對象的n個(gè)屬性值組成的m*n階的細胞數組,其中m=length(H),且n為指定的屬性細胞數組<property cell of array>中包含的屬性名個(gè)數。
a = get(h) 返回一結構,其中該結構的域名為該對象的屬性名,結構的域名值為相應屬性的當前值。H必須為標量。若用戶(hù)沒(méi)有指定輸出參量,則系統將信息顯示于屏幕之上。
a = get(0,'Factory') 返回所有能由用戶(hù)設置的屬性的缺省定義值。輸出參量a為一結構數組,該結構的域名為對象的屬性名,域名值為相應屬性的當前值。若用戶(hù)沒(méi)有指定輸出參量,則系統將信息顯示于屏幕之上。
a = get(0,'FactoryObjectTypePropertyName') 返回指定對象類(lèi)型的指定的屬性的缺省屬性值。輸入參量FactoryObjectTypePropertyName為一關(guān)鍵字,由字符Factory與對象類(lèi)型(如:Figure)還有屬性名(如:Color)組成:FactoryFigureColor
a = get(h,'Default') 返回由句柄h指定的對象的所有缺省屬性值。輸出參量a為一結構,該結構的域名為缺省值對應的屬性名。若用戶(hù)沒(méi)有指定輸出參量,則系統將該結構信息顯示于屏幕。
a = get(h,'DefaultObjectTypePropertyName') 返回對象類(lèi)型的指定屬性的缺省屬性值。輸入參量DefaultObjectTypePropertyName為一關(guān)鍵字,該字由字符Default與對象類(lèi)型名(例如:Figure)還有具體的屬性名(例如:Color)組成:DefaultFigureColor
例7-50
若想獲得定義于屏幕之上的圖形對象屬性L(fǎng)ineWidth的缺省屬性值,輸入:get(0,'DefaultLineLineWidth')
命令3 set
功能 設置對象的屬性。
用法 set(H,'PropertyName',PropertyValue,…) 用屬性值'PropertyValue'設置關(guān)于用參量H標志的對象(一個(gè)或多個(gè))的屬性名'PropertyName'(一個(gè)或多個(gè))。H可以為一句柄的向量。在這種情形下,命令set可以設置所有對象的屬性值。
set(H,a) 用指定的屬性值設置由H標志的對象的屬性。其中a為一結構數組,該結構數組的域名為對象的屬性名,域名值為相應屬性名的屬性值。
set(H,pn,pv…) 對由H指定的所有對象中指定的細胞數組屬性名pn設置為相應的細胞數組屬性值pv。
set(H,pn,<m-by-n cell array>) 對于每m個(gè)圖形對象設置n個(gè)屬性值,其中m=length(H),n為包含屬性名的細胞數組pn中包含的屬性名個(gè)數。即允許用戶(hù)對每一對象的指定的屬性設置不同的屬性值。
a= set(h) 返回句柄h中允許用戶(hù)設置的屬性名與可能的屬性值。輸出參量a為一結構數組,其域名為對象的屬性名,域名值為相應的屬性名對應的屬性值。若沒(méi)有指定輸出參量a,則系統自動(dòng)將信息顯示于屏幕,h必須為標量。
a= set(0,'Factory') 返回那些用戶(hù)可以設置缺省值的所有對象的屬性名,同時(shí)顯示可能的屬性值,輸出參量a為一結構數組,其域名為對象的屬性名,域名值為相應的屬性名對應的屬性值,若沒(méi)有指定輸出參量a,則系統自動(dòng)將信息顯示于屏幕。
a= set(0,'FactoryObjectTypePropertyName')返回指定根對象(0)類(lèi)型中指定的屬性名 ObjectTypePropertyName的所有可能的屬性值。輸入參量是由固定的關(guān)鍵字Factory、對象類(lèi)型(如axes)與屬性名(如 position等)組成。
a= set(h,'Default') 返回由h標記的對象上缺省設置的值,其中h必須是標量。
a= set(h,'DefaultObjectTypePropertyName') 返回指定對象h的類(lèi)型中指定的屬性名ObjectTypePropertyName的所有可能的屬性值。輸入參量是由固定的關(guān)鍵字Factory、對象類(lèi)型(如axes)與屬性名(如position等)組成。
命令4 reset
功能 重新設置圖形對象的屬性為它們的缺省值。
用法 reset(h) 重新設置由句柄h指定的圖形對象的屬性為系統為它們設置的初始值。若h為一圖形figure,該命令不能重新設置屬性 Position,Units,PaperPosition和PaperUnits;若h為一坐標軸axes,該命令不能重新設置屬性Position和 Units。
例7-51
reset(gca) %重新設置當前坐標軸的屬性。
reset(gcf) %重新設置當前圖形的屬性。
命令5 delete
功能 刪除文件或圖形對象。作為一可供選擇的函數,用戶(hù)可從當前目錄瀏覽器(Current Directory browser)中刪除文件。要打開(kāi)該瀏覽器,從MATLAB桌面上的View菜單中選擇Current Directory命令。
用法 delete filename 從磁盤(pán)上刪除指定的文件filename。參量filename可以是絕對路徑或與當前路徑相關(guān)的路徑名。其中可以包括通配符(*)。
delete(h) 刪除由句柄h指定的圖形對象。該命令無(wú)條件地、直接地刪除對象,甚至是圖形窗口。
delete('filename') 這是第一種情形的函數形式。當文件名包含于字符串filename中時(shí),使用函數形式。
例:
delete(‘D:\MATLABR12\work\*.m’) % 將刪除指定目錄上的所有.m文件。
命令6 findobj
功能 定位圖形對象且返回它們的句柄。用戶(hù)可用特定的屬性值與沿著(zhù)指定的層次分支來(lái)限定搜索條件。
用法 h = findobj返回根對象與它的所有的子孫對象句柄。
h = findobj('PropertyName',PropertyValue,…) 返回屬性名PropertyName具有屬性值PropertyValue的所有圖形對象。用戶(hù)可指定一對或多對PN與PV值,對此,findobj返回滿(mǎn)足所有條件的那些對象。
h = findobj(objhandles,…) 限定搜索的對象為列表于objhandles中的對象與它們子孫對象。
h = findobj(objhandles,'flat','PropertyName',PropertyValue,…) 限定搜索對象為objhandles中列出的對象,而不包含它們的子孫對象。
7.3.4 圖形窗口的控制命令
命令1 subplot
功能 生成與控制多個(gè)坐標軸。把當前圖形窗口分隔成幾個(gè)矩形部分,不同的部分是按行方向以數字進(jìn)行標號的。每一部分有一坐標軸,后面的圖形輸出于當前的部分中。
用法 subplot(m,n,p) 將一圖形窗口分成m*n個(gè)小窗口,在第p個(gè)小窗口中創(chuàng )建一坐標軸。則新的坐標軸成為當前坐標軸。若p為一向量,則創(chuàng )建一坐標軸,包含所有羅列在p中的小窗口。
subplot(h) 使句柄h對應的坐標軸稱(chēng)為當前的,用于后面圖形的輸出顯示。
subplot('Position',[left bottom width height]) 在由4個(gè)元素指定的位置上創(chuàng )建一坐標軸。位置元素的單位為歸一化單位。
h = subplot(…) 返回一新坐標的句柄于h。
命令2 hold
功能 保持當前圖形窗口中的圖形。該命令是決定是否在當前坐標軸中只能增加新的圖形對象還是覆蓋原有圖形對象。測試保持狀態(tài)命令為ishold。該命令可以設置當前坐標軸與當前圖形的屬性NextPlot。若一圖形窗口中有多個(gè)坐標軸,則每個(gè)坐標軸有自己的保持狀態(tài)。
用法 hold on 保留當前圖形與當前坐標軸的屬性值,后面的圖形命令只能在當前存在的坐標軸中增加圖形,即設置當前坐標軸屬性NextPlot為add。當必要的時(shí)候,坐標軸的一些屬性在增加新圖時(shí)還是要進(jìn)行相應的改變。例如,當新圖形的數據范圍超出了當前坐標軸的范圍,則命令會(huì )自動(dòng)地改變坐標軸的范圍,使能顯示新圖形。
hold off 在畫(huà)新圖形之前,重新設置坐標軸的屬性為缺省值。off是命令hold命令的缺省值。設置當前坐標軸的屬性NextPlot為replace。
hold 在on與off之間轉換。即在增加圖形與覆蓋圖形之間切換。當坐標軸不存在時(shí),則生成一坐標軸。同時(shí)使當前坐標軸屬性NextPlot在add與replace之間切換。
命令3 gcf
功能 獲得當前圖形窗口的句柄。
用法 h = gcf 返回當前圖形窗口的句柄。當前窗口為由命令plot、title與surf等得到的結果。若不存在圖形窗口,則系統自動(dòng)地生成一個(gè),并返回它的句柄。若用戶(hù)想當圖形窗口不存在時(shí),也不創(chuàng )建新的,則輸入:get(0,'CurrentFigure')
命令4 clf
功能 清除當前圖形窗口。該命令在命令窗口中執行與在回調程序中執行效果是一樣的,即它不能區別由callback設置的屬性 HandleVisibility,也就是說(shuō),當它從一回調程序中執行時(shí),命令clf僅僅刪除屬性HandleVisibility為on的圖形對象。
用法 clf 清除所有當前圖形窗口與窗口中的所有那些句柄為不隱藏(例如它們的屬性HandleVisibility為on)的圖形對象。
clf reset 無(wú)條件地清除當前圖形窗口中所有的圖形對象,且重新設置所有圖形窗口屬性為缺省值,除了屬性Position,Units,PaperPosition,PaperUnits。
命令5 close
功能 刪除指定的圖形窗口。
用法 close 刪除當前的圖形窗口。
close(h) 刪除由句柄h指定的圖形窗口。若h為一向量或矩陣,則close全部刪除其中每一分量指定的圖形句柄。
close name 刪除指定名字name的窗口。
close all 刪除所有沒(méi)有隱藏的圖形。
close all hidden 刪除所有具有隱藏的圖形。
status = close(…) 若成功地刪除了指定的對象則返回status=1,否則返回0。
命令6 newplot
功能 做好開(kāi)始畫(huà)新圖形對象的準備。在高級圖形m-文件的開(kāi)始使用該命令,用于確定在哪一個(gè)圖形窗口與坐標軸中輸出圖形。調用命令newplot能改變當前窗口與坐標軸?;旧?,當要在已經(jīng)存在的窗口與坐標軸中畫(huà)圖,有三個(gè)選項可選:
1.沒(méi)有改變任何屬性與刪除任何對象,直接在當前坐標軸中增加新的圖形對象;
2.在畫(huà)圖形的對象之前,刪除所有存在于當前坐標軸中的,句柄為非隱藏的對象;
3.在畫(huà)圖形的對象之前,無(wú)條件刪除所有的存在于當前坐標軸中的對象(不管句柄是否為隱藏),同時(shí)設置大部分的屬性為缺省值;
4.首先,newplot讀取當前圖形的屬性NextPlot的屬性值(關(guān)于該屬性的含義參見(jiàn)figure或axes的屬性表),再執行相應的動(dòng)作;
5.然后,newplot確定在哪一個(gè)窗口中畫(huà)圖,它讀取當前圖形的屬性NextPlot的屬性值,執行相應的操作。
用法 newplot 畫(huà)好圖形窗口與坐標軸,后面的圖形命令就可以在該坐標軸內畫(huà)圖。
h = newplot 效果如上,且返回當前坐標軸的句柄給h。
7.4 顏色與光照模式命令
7.4.1 顏色控制命令
命令1 colormap
功能 設置或獲取當前色圖。色圖為一個(gè)m*3的、元素在0到1之間的實(shí)數的矩陣,每一行為定義一個(gè)顏色的RGB向量。色圖矩陣的第k行定義了第k個(gè)顏色,其中 map(k,:)=[r(k) g(k) b(k)]指定了組成該顏色中紅色、綠色、蘭色的強度。
用法 colormap(map) 通過(guò)矩陣map設置色圖。若矩陣map中的元素不在[0 1]區間之內,則返回一個(gè)錯誤。在目錄color中的m-文件能夠生成許多色圖,每一個(gè)m-文件能夠接受顏色數作為函數參數,例如命令 colormap(hsv(64))生成了有64種顏色的hsv色圖。若用戶(hù)沒(méi)有指定顏色數,例如命令colormap(hsv),生成與當前色圖中顏色數相同的hsv色圖。MATLAB支持的色圖見(jiàn)表7-14。
表7-14
色圖名稱(chēng)
包含的顏色范圍
Cool
青藍和洋紅的色度
Bone
帶一點(diǎn)藍色的灰度
Flag
交替為紅色、白色、藍色和黑色
Jet
Hsv的一種變形(以蘭色開(kāi)始和結束)
Copper
線(xiàn)性銅色度
Hsv
色彩飽和值(以紅色開(kāi)始和結束)
Hot
從黑色到黃色到白色
Gray
線(xiàn)性灰度
Pink
粉紅的彩色度
Prim
三棱鏡。交替為紅色、橘黃色、黃色、綠色和天藍色
Lines
線(xiàn)性色圖
White
全白色圖
Colorcube
增強立方色圖
Autumn
紅色黃色陰影色圖
Spring
洋紅黃色陰影色圖
Summer
綠色黃色陰影色圖
Winter
蘭色綠色陰影色圖
例7-52
colormap('default') 設置當前色圖為缺省色圖。
cmap = colormap 獲取當前色圖矩陣。
命令2 bone
功能 生成帶淡蘭色的灰度刻度化的色圖。
用法 bone(m) 返回個(gè)一個(gè)階數為m*3的包含“bone”的色圖。
bone 返回一個(gè)與當前色圖行數相同的色圖。
命令3 cool
功能 生成帶陰影的青色和品紅的色圖。
用法 cool(m) 返回一個(gè)階數為m*3的包含“cool”的色圖。
cool 返回一個(gè)與當前色圖行數相同的色圖。
命令4 copper
功能 生成線(xiàn)性銅色色圖。
用法 copper(m)返回一個(gè)階數為m*3的包含“copper”的色圖。
copper 返回一個(gè)與當前色圖行數相同的色圖。
命令5 flag
功能 生成一個(gè)顏色順序為紅、白、蘭、黑的色圖。
用法 flag(m)返回一個(gè)階數為m*3的包含“flag”的色圖。增加m的值,會(huì )增加色圖的顆粒程度。
flag 返回一個(gè)與當前色圖函數相同的色圖。
命令6 gray
功能 生成一個(gè)線(xiàn)性灰度化的色圖。
用法 gray(m)返回個(gè)一個(gè)階數為m*3的包含灰度化的的色圖。
gray 返回一個(gè)與當前色圖函數相同的色圖。
命令7 hot
功能 生成一個(gè)顏色順序為黑、紅、黃、白的色圖。
用法 hot(m)返回個(gè)一個(gè)階數為m*3的包含“hot”的色圖。
hot 返回一個(gè)與當前色圖函數相同的色圖。
命令8 hsv
功能 生成一個(gè)包含色度-飽和度值的色圖。一個(gè)hsv色圖包含各種飽和色度顏色的色度的成分。其顏色從紅色到黃色、綠色、青色、藍色、品紅,最后返回紅色。該色圖對于顯示周期函數很有用處。
用法 hsv(m)返回個(gè)一個(gè)階數為m*3的包含hsv的色圖。
hsv 返回一個(gè)與當前色圖函數相同的色圖。
命令9 jet
功能 不同于hsv色圖的另外一種色圖。
用法 jet(m)返回個(gè)一個(gè)階數為m*3的,與hsv(m)不同的色圖,用于顯示NCSA流體激光圖片。
jet 返回一個(gè)與當前色圖函數相同的色圖。
命令10 pink
功能 生成一個(gè)帶柔和陰影粉紅色圖。
用法 pink(m)返回一個(gè)階數為m*3的包含“pink”的色圖。
pink 返回一個(gè)與當前色圖函數相同的色圖。
命令11 prism
功能:生成一個(gè)三棱鏡色圖。如同hsv色圖一樣,prism色圖中的顏色使用順序是一樣的,不同的是,命令prism重復使用它的六中顏色,而命令hsv是連續地變換它的顏色。
用法 prism(m)返回一個(gè)階數為m*3的包含六種循環(huán)使用的顏色:紅色、橙色、黃色、綠色、藍色、紫色。
prism 這種沒(méi)有任何輸入輸出參量的形式,改變當前坐標軸中的線(xiàn)對象的顏色為三棱鏡中的顏色。
7.4.2 色圖控制命令
命令1 brighten
功能 增亮或變暗色圖。
用法 brighten(beta) 增亮或變暗當前的色圖。若0<beta<1,則增亮色圖;若-1<beta<0,則變暗色圖。改變的色圖將代替原來(lái)的色圖,但本質(zhì)上是相同的顏色。
brighten(h,beta) 對指定的句柄對象h中的子對象進(jìn)行操作。
newmap = brighten(beta) 該命令沒(méi)有改變當前圖形的亮度,而是返回變化后的色圖給newmap。
newmap = brighten(cmap,beta) 該命令沒(méi)有改變指定色圖cmap的亮度,而是返回變化后的色圖給newmap。
命令2 colorbar
功能 顯示能指定顏色刻度的顏色條。且調整當前坐標軸,以適應當前的顏色條。
用法 colorbar 更新最近生成的顏色條?;蛉舢斍白鴺溯S沒(méi)有一顏色條,則在右邊顯示一垂直的顏色條。
colorbar('vert') 增加一垂直的顏色條到當前的坐標軸。
colorbar('horiz') 增加一水平的顏色條到當前的坐標軸。
colorbar(h) 用坐標軸h來(lái)生成一顏色條。若坐標軸的寬度大于高度,則顏色條是水平放置的。
h = colorbar(…)返回一顏色條句柄h,該句柄是一坐標軸對象。
colorbar(…,'peer',axes_handle) 生成一與坐標軸axes-handle有關(guān)的顏色條,代替當前的坐標軸。
命令3 contrast
功能 提高灰度色圖的對比度。該命令可以增強圖像的對比度。
用法 cmap = contrast(X) 返回一灰度色圖,該色圖與當前色圖有相同的維數。參量cmap為生成的灰度色圖。
cmap = contrast(X,m) 返回維數為m*3的灰度色圖cmap。
例7-53
>>load clown;
>>cmap = contrast(X);
>>image(X);
>>colormap(cmap);
命令4 rgbplot
功能 畫(huà)出色圖。
用法 rgbplot(cmap) 畫(huà)出維數為m*3的色圖矩陣cmap的每一列,矩陣的第一列為紅色強度,第二列為綠色強度,第三列為藍色強度。
命令5 diffuse
功能 漫反射率。
用法 R = diffuse(Nx,Ny,Nz,S) 返回曲面的漫反射率向量[Nx,Ny,Nz],S為一三維向量,用于定義光源的方向;S也可以為球面坐標系中的二維向量[Theta,Phi]。
Lambert定律:R = cos(PST),其中PST為曲面法線(xiàn)與光源方向之間夾角。
命令6 specular
功能 鏡面反射率。
用法 R = specular(Nx,Ny,Nz,S,V,spread) 返回一曲面的鏡面反射率向量[Nx,Ny,Nz],向量參量S與V分別用于指定光源位置與觀(guān)察點(diǎn)的位置。它們可以為三維直角坐標系向量[x,y,z]或者為二維球面向量[Theta,Phi]。當標準向量的方向為(S+V)/2,則鏡面的高光效果最強。第六個(gè)參量spread為鏡面反射擴散系數。
命令7 surfl
功能 三維帶光照模式的陰影圖。圖形的色澤取決于曲面的漫反射、鏡面反射與環(huán)境光照模式。
用法 surfl(…)效果與命令surf(…)基本上一樣,除了它受光源影響的曲面之外。
surfl(Z)、surfl(X,Y,Z)、surfl(Z,S)、surfl(X,Y,Z,S)、surfl(X,Y,Z,S,K) 這些都是有效的使用形式。若參數中有S,則為一三維向量[Sx,Sy,Sz],用于指定光源的方向。S也可視為點(diǎn)坐標系下的二維向量[AZ,EL]。S的缺省值為從當前觀(guān)察方向逆時(shí)針旋轉45度。使用命令組cla;hold on;view(AZ,EL);surfl(…);hold off等可畫(huà)出視角方向為(AZ,EL)的帶光照模式的曲面圖。第五參數K=[ka,kd,ks,
spread]指定環(huán)境光、漫反射光、鏡面反射光、擴散系數等的強弱。
surfl(…,'light') 用LIGHT對象生成一帶顏色的、帶光照模式的曲面。該命令可以生成與用缺省光照模式不同效果的曲面。
surfl(…,'cdata') 指定的曲面的反射光的顏色為cdata。
H = surfl(…) 返回曲面與光源的句柄。