matlab圖形句柄ppt課件.ppt_第1頁
matlab圖形句柄ppt課件.ppt_第2頁
matlab圖形句柄ppt課件.ppt_第3頁
matlab圖形句柄ppt課件.ppt_第4頁
matlab圖形句柄ppt課件.ppt_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第8章圖形句柄,1,MATLAB的圖形是由不同圖形對象(如坐標軸、曲線、曲面或文字等)組成的。MATLAB系統(tǒng)給每個圖形對象分配一個標識符,稱為句柄,以后可以通過該句柄獲取或設置該圖形對象的屬性【本章學習目標】了解圖形對象和圖形句柄的基本概念。掌握圖形對象屬性的基本操作。掌握利用圖形對象進行繪圖操作的方法。,2,8.1圖形對象及其句柄,MATLAB的圖形系統(tǒng)是面向?qū)ο蟮?,圖形對象是MATLAB為了描述具有類似特征的圖形元素而定義的具有一些公共屬性的抽象的元素集合,是用于顯示圖形和制作用戶界面的基本要素。8.1.1圖形對象MATLAB的圖形對象包括圖形窗口、坐標軸、用戶界面、曲線、曲面、文字、圖像等。在MATLAB中,每一個具體的圖形都是由若干個不同的圖形對象組成的。圖形對象是有層次的,其層次結構如圖8.1所示。圖形窗口是根對象的子對象,坐標軸和用戶界面對象是圖形窗口的子對象,曲線、曲面、文字等是坐標軸的子對象。,3,8.1.2圖形對象句柄MATLAB在創(chuàng)建每一個圖形對象時,都為該對象分配唯一的一個值,稱其為圖形對象句柄(Handle),它是圖形對象的唯一標識符。根對象的句柄值為0;圖形窗口對象的句柄值為一正整數(shù),顯示在該窗口的標題欄;其他圖形對象的句柄為雙精度浮點數(shù)。MATLAB提供了若干個函數(shù)用于獲取已有圖形對象的句柄,較為常用的函數(shù)如表8.1所示。,4,【例8.1】繪制曲線并查看有關對象的句柄。命令如下:x=linspace(0,2*pi,30);y=sin(x);h0=plot(x,y,rx)%曲線對象的句柄h0=171.0016h1=gcf%圖形窗口句柄h1=1h2=gca%坐標軸句柄h2=170.0017h3=findobj(gca,Marker,x)%坐標軸上曲線的句柄h3=171.0016圖形對象的句柄由系統(tǒng)自動分配,每次分配的值不一定相同。在獲取對象的句柄后,可以通過句柄來設置或獲取對象的屬性。,5,8.1.3圖形對象屬性1屬性名與屬性值為方便屬性的操作,MATLAB給每種對象的每一個屬性規(guī)定了一個名字,稱為屬性名,而屬性名的取值稱為屬性值。例如,LineStyle是曲線對象的一個屬性名,它的值決定著線型,取值可以是-、:、-.、-或none。在屬性名的寫法中,不區(qū)分字母的大小寫,而且在不引起歧義的前提下,屬性名不必寫全。例如,lines就代表LineStyle。此外,屬性名要用單撇號括起來。2屬性的操作(1)設置圖形對象屬性用戶可以通過set函數(shù)重新設置圖形對象屬性,其調(diào)用格式為set(句柄,屬性名1,屬性值1,屬性名2,屬性值2,)其中“句柄”用于指明要操作的圖形對象。如果在調(diào)用set函數(shù)時省略全部屬性名和屬性值,則將顯示出句柄所有的允許屬性。(2)獲取圖形對象屬性用戶可通過get函數(shù)獲取圖形對象的屬性值,其調(diào)用格式為V=get(句柄,屬性名)其中V是返回的屬性值。如果在調(diào)用get函數(shù)時省略屬性名,則將返回句柄所有的屬性值。例如,以下命令用來獲得上述曲線的顏色屬性值:col=get(h,Color);,6,3對象的公共屬性圖形對象具有各種各樣的屬性,有些屬性是所有對象共同具備的,有些屬性則是各對象所特有的。這里先介紹對象常用的公共屬性。(1)Children屬性。該屬性的取值是該對象所有子對象的句柄組成的一個向量。(2)Color屬性。該屬性的取值是一個顏色值,既可以用字符表示,也可以用RGB三元組表示。(3)Parent屬性。該屬性的取值是該對象的父對象的句柄。(4)Tag屬性。該屬性的取值是一個字符串,它相當于給該對象定義了一個標簽。定義了Tag屬性后,在任何程序中都可以通過findobj函數(shù)獲取該標簽所對應圖形對象的句柄。例如,hf=findobj(0,Tag,Flag1)將在屏幕對象及其子對象中尋找Tag屬性為Flag1的對象,并返回句柄。(5)Type屬性。表示該對象的類型,該屬性的值是只讀的。(6)UserData屬性。該屬性的取值是一個矩陣,默認值為空矩陣。在程序設計中,可以將一個與圖形對象有關的比較重要的數(shù)據(jù)存儲在這個屬性中,借此可以達到傳遞數(shù)據(jù)的目的。具體做法是,先用set函數(shù)給某一句柄添加一些附加數(shù)據(jù)(一個矩陣),如果想使用這樣的矩陣,再用get函數(shù)調(diào)用出來。(7)Visible屬性。該屬性的取值是on(默認值)或off,決定著圖形對象是否在圖形窗口中顯示出來。,7,【例8.2】在同一坐標下繪制紅、綠兩條不同的曲線,然后獲取綠色曲線的句柄,并利用句柄更改綠色曲線的樣式。程序如下:x=0:pi/50:2*pi;y=sin(x);z=cos(x);plot(x,y,r,x,z,g);%繪制兩根不同曲線Hl=get(gca,Children);%獲取兩曲線句柄向量Hlfork=1:size(Hl)ifget(Hl(k),Color)=010%010代表綠色Hlg=Hl(k);%獲取綠色線條句柄endendpause%便于觀察設置前后的效果set(Hlg,LineStyle,:,Marker,p);%對綠色線條進行設置,8,8.2圖形窗口對象與坐標軸,除根對象外,所有圖形對象都可以由與之同名的低層函數(shù)創(chuàng)建。8.2.1圖形窗口對象創(chuàng)建圖形窗口對象使用figure函數(shù),其調(diào)用格式如下。句柄變量=figure(屬性名1,屬性值1,屬性名2,屬性值2,)figure(窗口句柄)使用第1種格式時,按指定的屬性來創(chuàng)建圖形窗口。使用第2種格式時,若句柄是已經(jīng)存在的某圖形窗口句柄,則使該圖形窗口成為當前圖形窗口,并在此輸出;若句柄是不存在的圖形窗口句柄,則使用該句柄創(chuàng)建一個新的圖形窗口后,在新的圖形窗口輸出。figure函數(shù)不帶參數(shù)時,按MATLAB默認的屬性值創(chuàng)建圖形窗口。要關閉圖形窗口,使用close函數(shù),其調(diào)用格式為close(窗口句柄)另外,closeall命令可以關閉所有的圖形窗口,clf命令則是清除當前圖形窗口的內(nèi)容,但不關閉窗口。,9,圖形窗口常用屬性,(1)MenuBar/ToolBar屬性。屬性的取值可以是figure(默認值)或none,用來控制圖形窗口是否具有菜單條/工具欄。(2)NumberTitle屬性。該屬性的取值是on(默認值)或off,決定在圖形窗口的標題中是否以“FigureNo.n:”為標題前綴,這里n是圖形窗口的序號,即句柄值。(3)Resize屬性。該屬性的取值是on(默認值)或off。決定著在圖形窗口建立后可否用鼠標改變該窗口的大小。(4)Pointer屬性。該屬性的可取值是arrow(默認值)、crosshair、ibeam、watch、topl、topr、botl、botr、circle、cross、fleur、custom等,分別對應于15種典型的鼠標指針形式。(5)Position屬性。該屬性的取值是一個由4個元素構成的向量,其形式為n1,n2,n3,n4。這個向量定義了圖形窗口在屏幕上的位置和大小,其中n1和n2分別為對象左下角的橫縱坐標值,n3和n4分別為圖形窗口的寬度和高度。它們的單位由Units屬性決定。(6)Units屬性。該屬性的取值可以是下列字符串中的任何一種:normalized(相對單位,為默認值)、pixel(像素)、inches(英寸)、centimeters(厘米)和points(磅)。(7)對鍵盤及鼠標響應屬性。MATLAB允許對鍵盤和鼠標鍵按下這樣的動作進行響應,這類屬性有KeyPressFcn(鍵盤鍵按下響應)、WindowButtonDownFcn(鼠標鍵按下響應)、WindowButtonMotionFcn(鼠標移動響應)、WindowButtonUpFcn(鼠標鍵釋放響應)等,這些屬性所對應的屬性值可以為用MATLAB編寫的函數(shù)名或命令名,表示一旦鍵盤鍵或鼠標鍵按下之后,將自動調(diào)用給出的函數(shù)或命令。,10,【例8.3】建立一個圖形窗口。該圖形窗口沒有菜單條,標題名稱為“我的圖形窗口”,該窗口位于屏幕的左下角,其寬度和高度分別為450像素和250像素,且當用戶從鍵盤按下任意一個鍵時,將在該圖形窗口繪制出正弦曲線。命令如下:x=linspace(0,2*pi,60);y=sin(x);hf=figure(Position,5,5,360,210,MenuBar,none,Name,我的圖形窗口,NumberTitle,off,KeyPressFcn,plot(x,y);axis(0,2*pi,-1,1););,11,8.2.2坐標軸坐標軸是在圖形窗口中定義的一個畫圖區(qū)域。坐標軸對象是圖形窗口的子對象,在某個圖形窗口中輸出圖形圖像,實質(zhì)上是指在該圖形窗口的當前坐標軸中輸出圖形圖像。建立坐標軸對象使用axes函數(shù),其調(diào)用格式如下。句柄變量=axes(屬性名1,屬性值1,屬性名2,屬性值2,)axes或句柄變量=axes調(diào)用axes函數(shù)用指定的屬性在當前圖形窗口創(chuàng)建坐標軸,并將其句柄賦給左邊的句柄變量。函數(shù)不帶參數(shù)表示按MATLAB默認的屬性值在當前圖形窗口創(chuàng)建坐標軸。用axes函數(shù)建立坐標軸之后,還可以調(diào)用axes函數(shù)將其設定為當前坐標軸,且坐標軸所在的圖形窗口自動成為當前圖形窗口,調(diào)用格式為axes(坐標軸句柄),12,MATLAB常用屬性(1)Box屬性。該屬性的取值是on或off(默認值),它決定坐標軸是否帶有邊框。(2)GridLineStyle屬性。該屬性的取值可以是:(默認值)、-、-.、-或none,該屬性定義網(wǎng)格線的類型。(3)Title屬性。該屬性的取值是坐標軸標題文字對象的句柄,可以通過該屬性對坐標軸標題文字對象進行操作。例如,要改變坐標軸標題的顏色,可執(zhí)行命令:h=get(gca,Title);%獲得坐標軸的標題文字對象句柄set(h,Color,r);%設置標題為紅色(5)View屬性。該屬性的取值是2個元素的數(shù)值向量,定義視點。(6)Position屬性和Units屬性。定義坐標軸左下角在圖形窗口上的位置(以圖形窗口左下角為原點)。,13,(4)坐標軸刻度屬性。這類屬性包括以下內(nèi)容。XLabel、YLabel、ZLabel屬性。這3種屬性的取值分別是x、y、z軸說明文字的句柄。其操作與Title屬性相同。例如,要設置x軸文字說明,可使用命令:h=get(gca,XLabel);%獲得x軸文字對象句柄set(h,String,ValuesofXaxis);%設置x軸文字說明XLim、YLim、ZLim屬性。這3種屬性的取值都是具有2個元素的數(shù)值向量,分別定義各坐標軸的下限和上限,默認值為0,1。以前介紹的axis函數(shù)實際上是對這些屬性的直接賦值。XScale、YScale、ZScale屬性。這3種屬性的取值都是linear(默認值)或log,這些屬性定義各坐標軸的刻度類型。XTickLabel、YTickLabel、ZTickLabel屬性。這3種屬性的取值都是字符串矩陣,分別用字符串替換x、y、z軸默認的數(shù)字型刻度線標簽。例如,將坐標軸的x軸刻度線標簽改為一些字母,可執(zhí)行以下命令:set(gca,XTickLabel,A;B;C;D;E;F);Xdir、Ydir、Zdir屬性。這3種屬性的取值都是normal(默認值)或reverse,分別定義x、y、z軸的方向。(7)字體屬性。MATLAB允許對坐標軸標注的字體進行設置,這類屬性有FontName(字體名稱)、FontWeight(字形)、FontSize(字體大?。?、FontUnits(字體大小單位)、FontAngle(字體角度)等。FontName屬性的取值是系統(tǒng)支持的一種字體名或FixedWidth;FontSize屬性的單位由FontUnits屬性決定;FontWeight屬性的取值可以是normal(默認值)、bold、light或demi;FontAngle的取值可以是normal(默認值)、italic或oblique。,14,【例8.4】利用坐標軸對象實現(xiàn)圖形窗口的任意分割。clf;%清除圖形窗口中的內(nèi)容x,y=meshgrid(0:0.1:pi/2,0:0.1:pi);z=sin(x.2)+cos(y.2);axes(Position,0.05,0.6,0.3,0.3);plot(x,z);set(gca,XDir,reverse)axes(Position,0.45,0.6,0.5,0.35);plot3(x,y,z);set(gca,view,75,15,ZLim,-0.5,1.8)axes(Position,0.1,0.05,0.8,0.5);plot3(x,y,z);gridon;,15,8.3核心圖形對象,8.3.1曲線對象曲線對象是坐標軸的子對象,它既可以定義在二維坐標系中,也可以定義在三維坐標系中。建立曲線對象使用line函數(shù),其調(diào)用格式如下。句柄變量=line(x,y,屬性名1,屬性值1,屬性名2,屬性值2,)句柄變量=line(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,)其中,對x、y、z的含義和用法與高層曲線函數(shù)plot、plot3等一樣,其余的選項與前面介紹過的figure和axes函數(shù)類似。每個曲線對象也具有很多屬性,除Color、Parent等公共屬性外,其他常用屬性如下。(1)LineStyle屬性。定義線型。(2)LineWidth屬性。定義線寬,默認值為0.5磅。(3)Marker屬性。定義數(shù)據(jù)點標記符號,默認值為none。(4)MarkerSize屬性。定義數(shù)據(jù)點標記符號的大小,默認值為6磅。(5)XData、YData、ZData屬性。這3種屬性的取值都是數(shù)值向量或矩陣,分別代表曲線對象的3個坐標軸數(shù)據(jù)。,16,【例8.5】利用曲線對象繪制曲線y=etsin2t。程序如下:t=0:pi/100:pi;y=sin(2*pi*t).*exp(-t);figure(Position,30,100,480,320);axes(GridLineStyle,-.,XLim,0,pi,YLim,-0.6,1);h=get(gca,Title);set(h,String,y=e-tsin(2pit);line(XData,t,YData,y,Marker,*);gridon,17,8.3.2曲面對象曲面對象也是坐標軸的子對象。建立曲面對象使用surface函數(shù),其調(diào)用格式為句柄變量=surface(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,)其中,對x、y、z的含義和用法與高層曲面函數(shù)mesh、surf等一樣,其余的選項與前面介紹過的figure、axes等函數(shù)類似。每個曲面對象也具有很多屬性,除公共屬性外,其他常用屬性如下。(1)EdgeColor屬性。定義曲面網(wǎng)格線的顏色或著色方式。取值是代表某顏色的字符或RGB值,還可以是flat、interp或none,默認為黑色(2)FaceColor屬性。定義曲面網(wǎng)格片的顏色或著色方式。取值是代表某顏色的字符或RGB值,還可以是flat(默認值)、interp或none。(3)LineStyle屬性。定義曲面網(wǎng)格線的線型。(4)LineWidth屬性。定義曲面網(wǎng)格線的線寬,默認值為0.5磅。(5)Marker屬性。定義曲面數(shù)據(jù)點標記符號,默認值為none。(6)MarkerSize屬性。定義曲面數(shù)據(jù)點標記符號的大小,默認值為6磅。(7)XData、YData、ZData屬性。這3種屬性的取值都是數(shù)值向量或矩陣,分別代表曲曲面對象的3個坐標軸數(shù)據(jù)。,18,【例8.6】利用曲面對象繪制三維曲面z=x22y2。程序如下:x,y=meshgrid(-10:0.5:10);z=x.2-2.*y.2;hs=surface(x,y,z,FaceColor,w,EdgeColor,flat);gridon;set(gca,view,-37.5,25);%設置視點%設置標題h=get(gca,Title);set(h,String,網(wǎng)格曲面,FontSize,8,Position,0.4,0.9);pauseset(hs,FaceColor,flat);set(get(gca,Title),String,著色曲面);,19,8.3.3文本對象文本對象主要用于給圖形添加文字標注。在文本對象中除使用一般的文字以外,還允許使用LaTeX文本。使用text函數(shù)可以根據(jù)指定位置和屬性值添加文字說明,并保存句柄。該函數(shù)的調(diào)用格式為句柄變量=text(x,y,z,說明文字,屬性名1,屬性值1,屬性名2,屬性值2,)其中,x、y、z為雙精度型,定義文本對象在坐標軸上的位置,長度單位與當前圖形的長度單位相同。說明文字中除使用標準的ASCII字符外,還可使用LaTeX格式的控制字符。例如:h=text(0.5,0.5,gamma=rho2);將得到標注效果:=2。,20,文本對象的其他常用屬性如下。(1)String屬性。該屬性的取值是字符串或字符串矩陣,它記錄著文字標注的內(nèi)容。(2)Interpreter屬性。該屬性的取值是latex(默認值)、tex或none,該屬性控制對文字標注內(nèi)容的解釋方式,即LaTeX方式、TeX方式或ASCII方式。(3)字體屬性。這類屬性有FontName(字體名稱)、FontWeight(字形)、FontSize(字體大?。ontUnits(字體大小單位)、FontAngle(字體角度)等。FontName屬性的取值是系統(tǒng)支持的一種字體名或FixedWidth;FontSize屬性定義文本對象的大小,其單位由FontUnits屬性決定,默認值為10磅;FontWeight屬性的取值可以是normal(默認值)、bold、light或demi;FontAngle的取值可以是normal(默認值)、italic或oblique。(4)Rotation屬性。該屬性的取值是數(shù)值量,默認值為0。它定義文本對象的旋轉角度,取正值時表示逆時針方向旋轉,取負值時表示順時針方向旋轉。(5)BackgroundColr和EdgeColor屬性。設置文本對象的背景顏色和邊框線的顏色,可取值為none(默認值)或ColorSpec。(6)HorizontalAlignment屬性。該屬性控制文本與指定點的相對位置,其取值為left(默認值)、center或right。,21,【例8.7】利用曲線對象繪制曲線并利用文本對象完成標注。程序如下:x=-pi:.1:pi;y1=sin(x);y2=cos(x);h=line(x,y1,LineStyle,:);line(x,y2,LineStyle,-,Color,b);xlabel(-pileqThetaleqpi)ylabel(sin(Theta)title(Plotofsin(Theta)text(-pi/4,sin(-pi/4),leftarrowsin(-pidiv4),FontSize,12)set(h,Color,r,LineWidth,2)%改變曲線1的顏色和線寬,22,8.3.4其他核心對象1補片對象補片對象是由一個或多個多邊形構成的。補片對象特別適合為現(xiàn)實世界中的事物建立模型。補片對象可以用fill、fill3、contours和patch函數(shù)創(chuàng)建。在MATLAB中,創(chuàng)建補片對象的低層函數(shù)是patch函數(shù),通過定義多邊形的頂點和多邊形的填充顏色來實現(xiàn)。patch函數(shù)的調(diào)用格式為patch(x,y,color)patch(x,y,z,color)patch(屬性名1,屬性值1,屬性名2,屬性值2,)在前兩種格式中,x、y、z是向量或矩陣,定義多邊形頂點。若x、y、z為mn大小的矩陣,則每一行的元素構成一個多邊形。color指定填充顏色,若f為標量,補片對象用單色填充;若f為向量,補片對象用不同顏色填充各多邊形。每個多邊形用不同顏色,則可以產(chǎn)生立體效果。第3種格式以指定屬性的方式創(chuàng)建補片對象。,23,補片對象的其他常用屬性(1)Vertices和Faces屬性。其取值都是一個mn大小的矩陣。Vertices屬性定義各個頂點,每行是一個頂點的坐標。Faces屬性定義圖形由m個多邊形構成,每個多邊形有n個頂點,其每行的元素是頂點的序號(對應Vertices矩陣的行號)。(2)FaceVertexCData屬性。當使用Faces和Vertices屬性創(chuàng)建補片對象時,該屬性用于指定補片顏色。(3)FaceColor屬性。設置補片對象的填充樣式,可取值為RGB三元組、none、flat和interp(線性漸變)。(4)XData、YData和ZData屬性。其取值都是向量或矩陣,分別定義各頂點的x、y、z坐標。若它們?yōu)榫仃?,則每一列代表一個多邊形。,24,【例8.8】用patch函數(shù)繪制一個長方體。長方體由6個面構成,每面有4個頂點??梢园岩粋€面當成一個多邊形處理,程序如下:clf;k=2;%k為長寬比%X、Y、Z的每行分別表示各面的四個點的x、y、z坐標X=0110;1111;1001;0000;1001;0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論