《MATLAB基礎(chǔ)與編程入門》課件-第6章 圖形基礎(chǔ)_第1頁
《MATLAB基礎(chǔ)與編程入門》課件-第6章 圖形基礎(chǔ)_第2頁
《MATLAB基礎(chǔ)與編程入門》課件-第6章 圖形基礎(chǔ)_第3頁
《MATLAB基礎(chǔ)與編程入門》課件-第6章 圖形基礎(chǔ)_第4頁
《MATLAB基礎(chǔ)與編程入門》課件-第6章 圖形基礎(chǔ)_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

6.1概述6.2交互式繪圖6.3命令繪圖6.4基本三維繪圖6.5圖形顯示與調(diào)色板6.6保存和輸出圖形6.7簡單數(shù)據(jù)分析工具6.1概述數(shù)據(jù)的可視化是MATLAB的強大功能之一,而這僅僅是MATLAB圖形功能的一部分。MATLAB的圖形功能主要包括數(shù)據(jù)可視化、用戶圖形界面創(chuàng)建和簡單數(shù)據(jù)統(tǒng)計處理等。其中,數(shù)據(jù)可視化不僅僅是二維的,還可以在三維空間展示數(shù)據(jù)。數(shù)據(jù)或者圖形的可視化通常是進行數(shù)據(jù)處理或者圖形圖像處理的第一步驟。所有MATLAB圖形都需要繪制在MATLAB圖形窗體之中,而所有圖形數(shù)據(jù)可視化的工作也都以圖形窗體為基礎(chǔ)。MATLAB的圖形窗體如圖6-2所示。6.2交?互?式?繪?圖6.2.1工具欄快速繪圖如前所述,實現(xiàn)數(shù)據(jù)可視化需要有相應(yīng)的步驟,第一步驟就是準(zhǔn)備繪制的數(shù)據(jù)。繪制的數(shù)據(jù)可以用MATLAB函數(shù)通過編寫腳本文件或者函數(shù)文件來創(chuàng)建,也可以通過數(shù)據(jù)IO功能從其他數(shù)據(jù)文件中讀入,還可以通過其他MATLAB的工具將必要的數(shù)據(jù)導(dǎo)入到MATLAB工作空間。也就是說,能夠進行可視化的數(shù)據(jù)實質(zhì)都是保存在MATLAB工作空間中的變量。001 closeall002 clearall003 clc004005 006 rng(27,'threefry')007 startprice=50;008 fracreturns1=.0015*randn(200,1)+.0003;009 x=[startprice;1+fracreturns1];010 prices1=cumprod(x);011 t=(1:length(prices1))';012 rng(7,'twister')013 fracreturns2=.0015*randn(200,1)+.0003;014 x=[startprice;1+fracreturns2];015 prices2=cumprod(x);運行該腳本文件可以在MATLAB工作空間中看到下列變量:>>whosName SizeBytesClassAttributesfracreturns1 200x11600doublefracreturns2 200x11600doubleprices1 201x11608doubleprices2 201x11608doublestartprice 1x18doublet 201x11608doublex 201x11608doubleMATLAB的交互式繪圖功能可以利用MATLAB工具條PLOTS標(biāo)簽頁內(nèi)的若干命令來完成,這是進行數(shù)據(jù)可視化最便捷的方式。在默認的情況下,該標(biāo)簽頁的各項命令顯示為灰色,并且提示用戶選擇相應(yīng)的變量后再開始繪圖,如圖6-4所示。首先需要在MATLAB的工作空間瀏覽器中選擇需要可視化的變量,例如選擇變量prices1,然后PLOTS標(biāo)簽頁內(nèi)的若干命令就會變成彩色的狀態(tài),此時用戶可以點取任意可用的繪圖命令來可視化數(shù)據(jù)。此時的工具條最左側(cè)會顯示當(dāng)前所選擇的變量,而最右側(cè)單選框內(nèi)容分別是復(fù)用圖形窗體(ReuseFigure)和新建圖形窗體(NewFigure),如圖6-5所示。這時單擊plot按鈕將得到如圖6-6所示的圖形窗體。此時在MATLAB命令行窗體中還可以看到一條命令:>>plot(prices1)其實這條命令就是繪制變量prices1的MATLAB命令。單擊MATLAB工具條PLOTS標(biāo)簽頁中的下拉列表框,可以在彈出的下拉列表框工具中選擇不同的可視化類型。彈出的下拉列表框的最下面是兩個單選框,內(nèi)容分別是:Plotsforprices1表示若選擇該單選框,則此下拉列表框內(nèi)的內(nèi)容為僅適用完成prices1變量繪圖的內(nèi)容,默認情況下會選擇這個單選框;Allplots表示若選擇該單選框,則下拉列表框內(nèi)列出所有當(dāng)前MATLAB支持的繪圖類型,但是那些不適用于被選擇變量的繪圖指令則顯示為灰色,如圖6-7所示。6.2.2交互式繪圖工具利用MATLAB桌面環(huán)境的PLOTS標(biāo)簽頁配合工作空間瀏覽器選擇變量來實現(xiàn)數(shù)據(jù)可視化有一定的局限性,很多時候需要手段更加豐富的繪圖,一些復(fù)雜的可視化操作就需要使用交互式繪圖工具了。1.基本繪圖啟動交互式繪圖工具,需要在MATLAB命令行中鍵入如下命令:>>plottools此時將打開MATLAB的交互式繪圖工具。交互式繪圖工具默認會內(nèi)嵌在MATLAB的桌面環(huán)境之中,可以將該工具彈出。彈出的交互式繪圖工具如圖6-9所示。如果在執(zhí)行plottools命令之前已經(jīng)打開了某MATLAB圖形窗體,如圖6-6所示,則執(zhí)行plotools命令啟動的交互式繪圖工具會包含當(dāng)前的圖形,相當(dāng)于plottools命令將如圖6-6所示的MATLAB圖形窗體轉(zhuǎn)變成為交互式繪圖工具界面,如圖6-10所示。MATLAB的交互式繪圖工具界面可以分為如下四大部分。(1)圖形窗體面板(FigurePalette):位于交互式繪圖工具的左上方,在該區(qū)域可以完成曲線類型選擇、圖形窗體分割、繪制數(shù)據(jù)選擇以及注釋選擇等操作。(2)繪圖瀏覽器(PlotBrowser):位于交互式繪圖工具的右上方,在該區(qū)域可以顯示當(dāng)前圖形窗體中已經(jīng)繪制的曲線等對象列表。(3)屬性編輯器(PropertyEditor):位于交互式繪圖工具的下方,它可以根據(jù)選擇的圖形對象的不同而顯示相應(yīng)對象的屬性。在這里可以完成很多對象的屬性編輯,從而完成諸如增加注釋文本、設(shè)置數(shù)軸信息等操作。(4)圖形窗體(Figure):也就是繪圖區(qū),它位于交互式繪圖工具的中央,所有繪圖的結(jié)果都會顯示在這里??梢酝ㄟ^交互式繪圖工具的View菜單中相應(yīng)的菜單命令分別打開不同的窗體工具,該菜單命令與圖形窗體View菜單的內(nèi)容完全一致,如圖6-11所示。此外在View菜單下還有PlotEditToolbar菜單命令,執(zhí)行該命令可以打開交互式繪圖工具的工具欄,如圖6-12所示。在很多時候需要將不同的數(shù)據(jù)繪制在同一個圖軸下以便進行數(shù)據(jù)的比較。如果需要將新的數(shù)據(jù)增加到已經(jīng)繪制了曲線的圖軸上,可以像前面增加數(shù)據(jù)的操作那樣來實現(xiàn),或者直接將數(shù)據(jù)拖放到圖軸上,還可以使用繪圖瀏覽器窗體下的AddData...按鈕,或者使用圖軸的右鍵快捷菜單下的AddData...菜單命令。新的曲線將使用其他顏色來標(biāo)識。默認情況下,繪制的第一條曲線是藍色。之后繪制的曲線默認顏色依次為洋紅、黃色、紫色、綠色等不同的色彩,不同版本的MATLAB會存在些許不同。將prices1變量繪制到交互式繪圖工具中同一個圖軸下的結(jié)果如圖6-21所示。MATLAB不僅能夠在同一個圖軸下同時顯示多條曲線,還支持在同一個圖形窗體下顯示多個圖軸。增加圖軸就是利用了MATLAB圖形功能中的子圖(Subplot)功能。此時在交互式繪圖工具中,需要單擊圖形窗體面板新建繪圖區(qū)域中的2DAxes或者3DAxes后面的田字格按鈕,然后在彈出的工具中正確設(shè)置子圖的分割方式。從MATLAB7.0(即MATLABRelease14)開始,不僅僅單個圖形窗體可以分割成不同的子圖,還可以將多個圖形窗體容納在同一個圖形窗體框架下。當(dāng)交互式繪圖工具上具有多個圖形窗體時,可以單擊交互式繪圖工具欄上的等按鈕,在交互式繪圖工具的框架內(nèi)排列圖形窗體的位置。例如,單擊

按鈕就可以將兩個圖形窗體并排排列,如圖6-26所示。2.格式化圖形所謂格式化圖形,是指設(shè)置MATLAB圖形窗體內(nèi)的各種圖形對象屬性。在交互式繪圖工具中,所有圖形對象的屬性設(shè)置都需要通過屬性編輯器來完成。1)添加圖軸信息當(dāng)用戶在交互式繪圖工具中選擇圖軸的時候,交互式繪圖工具的下方將顯示圖軸的屬性編輯器。在默認的情況下,屬性編輯器的面積偏小,不會顯示所有內(nèi)容,可以調(diào)整顯示區(qū)域,從而顯示所有內(nèi)容,如圖6-27所示。對于坐標(biāo)軸的修改需要通過對應(yīng)坐標(biāo)軸不同的屬性頁分別完成。默認情況下,坐標(biāo)軸的間隔設(shè)置分為5個等間隔,用戶可以自己手工修改(Manual屬性)或者由MATLAB根據(jù)指定的間隔來選擇(Stepby),也可以通過對話框中的Insert按鈕插入間隔或者Delete按鈕刪除不需要的數(shù)據(jù)間隔。在手工修改(Manual)設(shè)置坐標(biāo)軸的間隔時,可以設(shè)置標(biāo)簽位置(TickLabelsLocation),也就是間隔標(biāo)識出現(xiàn)在坐標(biāo)軸上的位置,還可以設(shè)置不同的間隔標(biāo)簽(Labels)內(nèi)容,例如可以在坐標(biāo)軸標(biāo)簽上顯示文本而不是默認的簡單數(shù)字,用戶需要單擊Labels列中任意的標(biāo)簽內(nèi)容,編輯并給定所需要顯示的文本。在坐標(biāo)軸間隔屬性對話框中,最下方的Showminorticks屬性決定了在相應(yīng)坐標(biāo)軸上是否顯示更細節(jié)的坐標(biāo)軸刻度信息。此外在坐標(biāo)軸的屬性編輯器中還可以設(shè)定Font屬性,也就是指定在坐標(biāo)軸中所有文本的字體屬性。如果需要設(shè)置中文內(nèi)容要多留意字體的選擇,最好使用常用的字體。完成了圖軸屬性設(shè)置之后的交互式繪圖工具如圖6-30所示。2)設(shè)置曲線樣式當(dāng)選擇圖軸中的曲線時,交互式繪圖工具將顯示曲線的屬性編輯器,如圖6-32所示。曲線的屬性編輯器中可以針對圖軸上所顯示的圖形(曲線)進行二次設(shè)置。例如可以設(shè)置顯示名稱(DisplayName)來修改曲線在繪圖瀏覽器內(nèi)所顯示的名稱,默認該屬性就是繪制曲線用的變量名稱。通過PlotType下拉列表框中不同屬性還可以設(shè)置不同的繪圖類型,不過這里能夠選擇的繪圖類型比較少,而且下拉列表框中的選項會根據(jù)最初選擇的坐標(biāo)軸類型以及數(shù)據(jù)的情況發(fā)生變化。數(shù)據(jù)源(XDataSource、YDataSource以及ZDataSource)下拉列表框可以讓用戶再次選擇繪制曲線所用的變量。對于常用的二維曲線繪圖,比較重要的屬性是線條(Line)屬性和標(biāo)識(Marker)屬性,其中線條屬性可以通過下拉列表框分別設(shè)定曲線的線形、粗細以及顏色,例如設(shè)定曲線的線形為長虛線,粗細為2.0,并且修改色彩為黑色。標(biāo)識屬性定義了在相應(yīng)的數(shù)據(jù)點用哪一種標(biāo)識符來表示,單擊該下拉列表框,將給出能夠使用的所有標(biāo)識符,如圖6-33所示。MATLAB默認的曲線不采用任何數(shù)據(jù)標(biāo)識,那么請讀者嘗試設(shè)定曲線的標(biāo)識符為不同的符號來察看繪圖樣式的變化。由于例子使用的數(shù)據(jù)比較密集,所以曲線上的數(shù)據(jù)點排列也比較緊密,若設(shè)置了標(biāo)識符則無法仔細地區(qū)分出具體的數(shù)據(jù)點。這時,可以取消曲線的線形,只保留數(shù)據(jù)點,即選擇曲線的線條屬性為none,設(shè)置標(biāo)識為星號,尺寸(Size)為1.0,再設(shè)定渲染顏色和描繪顏色都是紅色,這樣曲線的數(shù)據(jù)點將會很清晰地顯示在交互式繪圖工具的圖軸中,完成設(shè)置的繪圖內(nèi)容如圖6-34所示。3)添加圖例圖例作為標(biāo)示繪制在圖軸內(nèi)數(shù)據(jù)曲線的說明,默認繪制在圖軸的右上角處。其中包括了繪制在圖軸內(nèi)曲線的名稱、色彩、樣式和標(biāo)識。圖例為每一條曲線添加簡要的說明文字,便于用戶了解數(shù)據(jù)曲線的基本信息。增加圖例的方法非常簡單,只要單擊交互式繪圖工具或者MATLAB圖形窗體工具欄上的增加圖例按鈕

??即可,此時將在圖形窗體的圖軸右上方顯示圖例,如圖6-36所示。在圖例屬性編輯器中,方向(Orientation)屬性可以定義圖例的排列方向,默認是縱向(Vertical)排列,此時,如果圖形窗體中存在多個曲線,則每個曲線的圖例將垂直排列。如果選擇水平(Horizontal)排列,則每個曲線的圖例將并排排列。具體選擇哪一種顯示方法,需要根據(jù)具體的數(shù)據(jù)可視化情況分別來選擇。例如,在本例中將prices1曲線和prices2曲線的圖例方向?qū)傩栽O(shè)置為水平,則此時的繪圖內(nèi)容如圖6-38所示。4)添加注釋注釋是由創(chuàng)建圖形的用戶給繪制內(nèi)容添加的屬性說明,這些說明可以是一些文字結(jié)合簡單的圖形。相應(yīng)的說明文字可以用來提示數(shù)據(jù)曲線的細節(jié)特點,比如,需要特別注意的數(shù)據(jù)點等。在交互式繪圖工具中增加注釋可以通過圖形窗體面板下的注釋(Annotations)來完成,這里面包括如下內(nèi)容。5)圖形窗體屬性設(shè)置圖形窗體的屬性時,用鼠標(biāo)單擊圖形窗體內(nèi)任意空白位置,此時交互式繪圖工具內(nèi)將顯示圖形窗體的屬性編輯器,如圖6-43所示。在圖形窗體的屬性編輯器中,需要設(shè)置的屬性主要是圖形窗體的名稱(FigureName)屬性;調(diào)色板(Colormap)屬性定義了在圖形窗體中圖像顯示的效;圖形窗體色彩(FigureColor)屬性定義了圖形窗體當(dāng)前的背景色,如果認為默認的灰色窗體顏色不符合要求,則可通過修改這個屬性完成窗體顏色的設(shè)置修改。完成全部交互式繪圖工作之后,可以通過Desktop菜單下的UndockFigure菜單命令將圖形窗體彈出,此時交互式繪圖工具將恢復(fù)成空白不包含任何圖形的樣式,同時,圖形窗體內(nèi)顯示已經(jīng)設(shè)置完畢的曲線。本例最終的效果如圖6-44所示。3.生成M文件當(dāng)用戶利用各種繪圖工具完成了圖形繪制之后,可以將圖形繪制的過程以及各種圖形對象屬性保存成為M文件,生成的M文件函數(shù)可以供以后創(chuàng)建圖形使用。與編寫一般的M語言函數(shù)文件類似,需要將函數(shù)名稱修改成為合適的名稱,不要使用默認的createfigure。在保存時,必須將函數(shù)文件名稱和函數(shù)名稱設(shè)置一致,而且需要全部使用小寫字符。保存之后,可以在MATLAB命令行窗體中嘗試運行該函數(shù),例如在MATLAB命令行窗體中鍵入如下的命令:>>mystocks(t,[prices1,prices2])運行結(jié)果如圖6-45所示。通過自動代碼生成得到的函數(shù)文件能夠比較好地完成圖形的復(fù)建工作。使用自動代碼生成功能可以簡化工程師日常編寫程序的工作量,結(jié)合交互式繪圖工具,可以讓用戶在不甚了解繪圖命令的情況下就完成MATLAB的數(shù)據(jù)可視化工作。

6.3命令繪圖6.3.1基本繪圖命令在MATLAB中進行數(shù)據(jù)可視化,使用最頻繁的曲線繪制函數(shù)就是plot。在前面的交互式繪圖工具中,相應(yīng)曲線的繪制就反復(fù)調(diào)用了這個函數(shù)。該函數(shù)能夠?qū)⑾蛄炕蛘呔仃囍械臄?shù)據(jù)繪制在圖形窗體中,并且可以指定不同的線型和色彩。同一個plot函數(shù)不僅能夠繪制一條曲線,還可以一次繪制多條曲線。plot函數(shù)的基本使用語法格式如下:繪制一條曲線:plot(xdata,ydata,'color_linestyle_marker')繪制多條曲線:plot(xdata1,ydata1,'clm1',xdata2,ydata2,'clm2',…)若在繪制曲線的時候沒有指定曲線的色彩、線型和標(biāo)識符,則MATLAB使用默認設(shè)置。6.3.2設(shè)置曲線的樣式屬性曲線的樣式包括了曲線的色彩、線型、標(biāo)識符等,這些曲線的屬性可以在繪制曲線時直接指定。表6-1對plot函數(shù)中常用的曲線樣式控制符進行了總結(jié)。MATLAB提供了一些繪圖控制命令可以讓圖形繪制更加快捷。表6-2總結(jié)了較為常用的繪圖控制命令,在繪圖操作中會經(jīng)常用到這些命令。圖形對象的屬性可以通過屬性察看器(PropertiesInspector)來察看和修改。單擊圖形窗體工具欄上的打開屬性察看器圖標(biāo)?,圖形窗體將自動進入編輯模式(EditMode),同時會打開圖形對象屬性察看器,默認地,會打開圖軸的屬性察看器。用鼠標(biāo)左鍵單擊圖形窗體內(nèi)的曲線,就可以得到如圖6-53所示的曲線對象的屬性察看器。屬性察看器可以將屬性按照字母排序顯示或者分組顯示。在分組顯示時,會分為顏色與樣式(ColorandStyling)、數(shù)據(jù)標(biāo)識(Markers)、數(shù)據(jù)(Data)、圖例(Legend)、交互性(Interactivities)、回調(diào)函數(shù)(Callbacks)、回調(diào)函數(shù)執(zhí)行控制(CallbackExecutionControl)、圖形對象層次關(guān)系(Parent/Child)、識別(Indentifier)等幾大類。當(dāng)MATLAB的圖形窗體處于編輯模式時,可以直接對圖形窗體內(nèi)的圖形對象進行增加文本注釋、箭頭、標(biāo)注等操作,也可以通過設(shè)置對象的屬性來改變圖形對象的樣式,進入圖形窗體的編輯模式可以采用下面幾種方法:執(zhí)行圖形窗體中,Tool菜單下的EditPlot命令;單擊圖形窗體工具欄中選擇對象按鈕?;執(zhí)行Edit菜單下的Propertiesis菜單命令,包括FigureProperties、AxesProperties或者CurrentObjectProperties,分別會打開圖形窗體、圖軸以及當(dāng)前圖形對象的屬性察看器,同時會讓圖形窗體進入編輯模式;執(zhí)行View菜單下的FigurePalette、PlotBrowser或PropertyEditor命令,可以將當(dāng)前圖形窗體切換到交互式繪圖工具模式,其實也相當(dāng)于進入了圖形窗體的編輯模式;執(zhí)行Insert菜單下的菜單命令,增加包括Line、Arrow、TextArrow等注釋內(nèi)容,圖形窗體會進入編輯模式;在MATLAB命令行窗體中,鍵入plotedit命令。進入圖形窗體編輯模式后,可以向圖形窗體內(nèi)添加各種元素,或者設(shè)置相應(yīng)對象的屬性,只需要在相應(yīng)的圖形對象上單擊鼠標(biāo)右鍵,通過彈出的快捷菜單來完成即可。完成編輯之后,只要單擊

??按鈕就可以回到正常的顯示模式。6.3.3使用子圖MATLAB的圖形窗體可以劃分為多個圖形顯示區(qū)域,每個圖形顯示區(qū)域彼此獨立,用戶可以根據(jù)自己的需要把數(shù)據(jù)繪制在指定的區(qū)域內(nèi)。這種特性就是MATLAB的子圖(Subplot)特性。使用子圖的方法非常簡單,使用subplot函數(shù)創(chuàng)建并選擇繪制區(qū)域即可。subplot函數(shù)可以將現(xiàn)有的圖形窗體分割成指定行數(shù)和列數(shù)的若干區(qū)域,在每個區(qū)域內(nèi),都可以包含一個圖軸。利用該函數(shù)選擇不同的繪圖區(qū)域,則所有的繪圖操作都會將結(jié)果輸出到指定的繪圖區(qū)中。subplot函數(shù)的基本用法如下:subplot(m,n,p)其中,m和n為將圖形窗體分割成的行數(shù)和列數(shù),p為選定的窗體區(qū)域的序號,以行元素優(yōu)先順序排列。使用subplot函數(shù)創(chuàng)建并選擇不同的繪圖區(qū)域,后續(xù)的函數(shù)會根據(jù)所選擇繪圖區(qū)域的情況繪制出不同的結(jié)果。6.3.4控制繪圖區(qū)域所謂MATLAB的繪圖區(qū)域,是指圖形窗體中的圖軸(Axes)。默認情況下,MATLAB在繪制圖形時會自動地根據(jù)繪制的數(shù)據(jù)調(diào)整圖軸的顯示范圍,能夠保證將所有數(shù)據(jù)以適當(dāng)?shù)谋壤@示在圖形窗體中。用戶可以修改圖軸的顯示范圍,還可以增加或者修改圖軸的標(biāo)注??刂茍D軸有兩個函數(shù)可以使用,一個是axes函數(shù),另外一個是axis函數(shù),這兩個函數(shù)都能夠?qū)崿F(xiàn)圖軸設(shè)置。axis函數(shù)可以修改圖形窗體圖軸的范圍和顯示比例,它的基本語法格式如下:axis([xminxmaxyminymax])其中,xmin和xmax決定X軸的顯示范圍,ymin和ymax決定Y軸的顯示范圍。若此時沒有任何圖形窗體被打開,則在MATLAB命令行窗體中,鍵入下面的命令:>>axisans=0101MATLAB按照默認的設(shè)置創(chuàng)建一個圖形窗體,里面包含一個空白的圖軸,其中X軸的范圍和Y軸的范圍都為0~1。由于默認情況下繪制在圖形窗體內(nèi)的曲線會包含所有數(shù)據(jù),并且根據(jù)數(shù)據(jù)的范圍自動調(diào)節(jié)圖形顯示的比例。axis函數(shù)除了能夠用來直接設(shè)置軸的范圍外,還能夠用來設(shè)置軸的行為,axes函數(shù)也可以用于創(chuàng)建圖軸,并且提供了對圖軸更豐富的控制能力。axes函數(shù)在創(chuàng)建新的圖軸時,還可以設(shè)置圖軸的若干屬性來控制繪制圖軸的外觀。很多時候還需要設(shè)置圖軸的坐標(biāo)線間隔屬性(Ticks)。在默認的情況下,MATLAB按照繪制數(shù)據(jù)的范圍設(shè)置坐標(biāo)線的間隔,這種間隔的設(shè)置一般采用五等分自動完成。若有必要,用戶也可以根據(jù)自己的需求設(shè)置這些間隔,具體的方法是設(shè)置圖軸的間隔屬性(XTick或者YTick屬性),不同坐標(biāo)軸的間隔需要分別設(shè)置。6.3.5格式化繪圖命令所謂格式化繪圖,是指為MATLAB圖形窗體中的圖形對象添加必要的注釋、標(biāo)題或者其他文本信息,讓MATLAB的圖形能夠表述更加豐富的信息。MATLAB不僅能夠在交互式繪圖中完成這些工作,還可以通過一系列的函數(shù)編程完成這些格式化繪圖的功能。1.增加文本信息MATLAB圖形窗體的文本信息主要包括圖形標(biāo)題、文本注釋、軸標(biāo)簽和圖例等。圖6-62中的MATLAB圖形窗體包含了所有這些文本信息。為圖形窗體增加這些文本信息一般有多種途徑,可以通過菜單命令、屬性編輯器,或者使用MATLAB提供的函數(shù)。MATLAB的圖形窗體Insert菜單下包含多個菜單命令可以用來添加這些格式化的文本信息,而通過MATLAB圖形編輯器,配合不同對象的屬性編輯器也可以完成添加格式化文本信息的工作。不過這些方法都沒有利用函數(shù)編寫程序簡便靈活。1)添加標(biāo)題(Title)添加圖形的標(biāo)題需要使用title函數(shù),該函數(shù)的基本用法為title(string)其中,字符向量或者字符串string為圖形窗體的標(biāo)題,該標(biāo)題將被自動地設(shè)置在圖軸的正中頂部,例如在MATLAB命令行窗體中,鍵入下面的命令:>>title(date)則MATLAB會創(chuàng)建包含一個空白圖軸的圖形窗體,同時將圖軸的標(biāo)題設(shè)置為當(dāng)前的日期,如圖6-63所示。2)添加圖例(Legend)圖例作為標(biāo)示繪制在圖軸內(nèi)數(shù)據(jù)曲線的說明,默認繪制在軸的右上角處,其中包括了繪制在軸內(nèi)曲線的色彩、樣式和標(biāo)識,同時在繪制圖例的地方為每一個曲線添加簡要的說明文字,便于用戶了解數(shù)據(jù)曲線的信息。添加軸的圖例需要使用函數(shù)legend,該函數(shù)的基本語法如下:legend(string1,string2,…)其中,字符向量或字符串string1、string2為圖例的說明性文本,MATLAB將自動按照繪制在軸上的曲線的繪制次序選擇相應(yīng)的文本作為圖例。例如,假設(shè)在圖形窗體上繪制如例6-4所示的三條曲線,為這三條曲線增加圖例。在MATLAB命令行窗體鍵入下面的命令:>>legend('y=sin(t)','y=sin(t-pi/2)','y=sin(t-pi)')這時的圖形窗體將出現(xiàn)相關(guān)的圖例,如圖6-64所示。通過圖例可以非常方便地了解繪制在圖形窗體中的曲線基本信息。圖例所在的位置可以任意挪動,用鼠標(biāo)就可以直接在圖形窗體中移動圖例的位置,也可以在創(chuàng)建圖例的時候,利用legend函數(shù)設(shè)置圖例的不同位置,即設(shè)置圖例的位置(Location)屬性,不過圖例位置屬性的取值比較有趣,它有若干個固定的取值。'North':在圖軸內(nèi)部,位于正上方;'South':在圖軸內(nèi)部,位于正下方;'East':在圖軸內(nèi)部,位于右側(cè)正中;'West':在圖軸內(nèi)部,位于左側(cè)正中;'NorthEast':在圖軸內(nèi)部,位于右上方,默認位置;'NorthWest':在圖軸內(nèi)部,位于左上方;'SouthEast':在圖軸內(nèi)部,位于右下方;'SouthWest':在圖軸內(nèi)部,位于左下方;'NorthOutside':在圖軸外部,位于正上方;'SouthOutside':在圖軸外部,位于正下方;'EastOutside':在圖軸外部,位于右側(cè)正中;'WestOutside':在圖軸外部,位于左側(cè)正中;'NorthEastOutside':在圖軸外部,位于右上角;'NorthWestOutside':在圖軸外部,位于左上角;'SouthEastOutside':在圖軸外部,位于右下角;'SouthWestOutside':在圖軸外部,位于左下角;'Best':在圖軸內(nèi)部,尋找最佳位置,與數(shù)據(jù)曲線不沖突為準(zhǔn);'BestOutside':在圖軸外部,自動尋找最佳位置;其實,這些位置屬性與前面交互式繪圖工具對應(yīng)的圖例位置編輯一一對應(yīng),大家可以結(jié)合前面介紹交互式繪圖工具時講述的內(nèi)容理解這些屬性。當(dāng)然,legend函數(shù)還有其他多種屬性可以設(shè)置,具體的內(nèi)容請參閱MATLAB的幫助文檔中關(guān)于legend函數(shù)的說明。3)添加坐標(biāo)軸標(biāo)簽(Label)在MATLAB圖形窗體中坐標(biāo)軸標(biāo)簽可以用來說明與坐標(biāo)軸有關(guān)的信息。坐標(biāo)軸標(biāo)簽也可以包含各種需要添加的信息例如坐標(biāo)軸數(shù)據(jù)的單位、物理意義等。MATLAB可以為不同的坐標(biāo)軸添加不同的信息,一般地,可以使用xlabel、ylabel和zlabel函數(shù)分別為圖形窗體圖軸的X軸、Y軸和Z軸添加標(biāo)簽。以X軸為例,這三個函數(shù)的基本使用語法如下:xlabel(string)其中字符向量或者字符串string就是坐標(biāo)軸的標(biāo)簽。坐標(biāo)軸的標(biāo)簽自動與坐標(biāo)軸居中對齊。例如,在圖形窗體中為X軸和Y軸添加標(biāo)簽:>>plot(sin(0:pi/100:pi))>>xlabel('X軸數(shù)據(jù)');ylabel('Y軸數(shù)據(jù)')添加標(biāo)簽之后的圖形窗體內(nèi)容如圖6-65所示。4)添加文本注釋(text)文本注釋是由創(chuàng)建圖形的用戶添加的說明性文字,這些文字可以用來說明數(shù)據(jù)曲線的細節(jié)特點,例如標(biāo)識需要特別注意的數(shù)據(jù)點。創(chuàng)建文本注釋的函數(shù)是text函數(shù),它的基本語法如下:text(x,y,string)其中,x和y是文本注釋位置的坐標(biāo)值,該坐標(biāo)值使用當(dāng)前軸系的單位設(shè)置,這個坐標(biāo)就是文本起始點的坐標(biāo)。string則是文本注釋的具體內(nèi)容,可以是字符向量、字符串或者字符串?dāng)?shù)組,也可以是由不同字符向量或者字符串構(gòu)成的元胞數(shù)組,字符串?dāng)?shù)組或者元胞數(shù)組的每個元素為注釋的一行內(nèi)容。例如,可以向圖形窗體添加注釋文本:>>x=0:.1:2*pi;y=sin(x);plot(x,y);gridon;>>text(pi/3,sin(pi/3),'<--Sin(\pi/3)')得到的效果如圖6-66所示。2.格式化文本標(biāo)注可以通過修改這些圖形對象的屬性讓文字顯示得更加美觀。這時,修改屬性需要通過set命令,而前提是需要獲取相應(yīng)圖形對象的句柄。文本標(biāo)注的字體屬性可以在創(chuàng)建文本標(biāo)注的時候進行設(shè)置,其中有關(guān)字體本身的屬性主要包括字體名稱(FontName)、字體大小(FontSize)、字體是否加粗(FontWeight)以及字體大小的度量單元(FontUnits)等。3.特殊字符標(biāo)注利用TeX字符集就可以在MATLAB圖形窗體的文本注釋中使用諸如希臘字符、數(shù)學(xué)符號或者設(shè)置文字為上標(biāo)和下標(biāo)等。在MATLAB圖形窗體的所有文本標(biāo)注中都可以使用這些特殊的字符,比如在標(biāo)題、坐標(biāo)軸標(biāo)簽、文本注釋等。使用特殊文本時一定要注意不要忘記“\”符號,否則MATLAB就會按照普通文本處理這些字符。除了直接使用附錄中的TEX字符集外,還可以用下面的標(biāo)識符組合完成更豐富的字體標(biāo)注。\bf:加粗字體;\it:斜體字;\sl:斜體字(很少使用);

\rm:正常字體;\fontname{fontname}:定義使用特殊的字體名稱;\fontsize{fontsize}:定義使用特殊的字體大小,單位為FontUnits。其中,設(shè)置字體的大小或者名稱直接影響接在定義符后面的文本內(nèi)容,直到下一個字體定義出現(xiàn)。進行上標(biāo)或者下標(biāo)文本的注釋需要使用“^”和“_”字符。進行上標(biāo)標(biāo)注的語法如下:^{superstring}其中,superstring是上標(biāo)的內(nèi)容,它必須在大括號“{}”之中;進行下標(biāo)標(biāo)注時的標(biāo)注語法如下:_{substring}其中,substring是下標(biāo)的內(nèi)容,它必須在大括號“{}”之中。6.3.6特殊圖形函數(shù)前面兩個小節(jié)介紹的都是繪制基本圖形曲線的方法,使用的也是最基礎(chǔ)的繪圖函數(shù)plot。同樣對于二維平面繪圖還可以使用諸如雙坐標(biāo)軸、對數(shù)坐標(biāo)軸等,另外在MATLAB中還能夠繪制一些特殊的圖形,其中包括柱狀圖、餅圖、火柴桿圖等。這些特殊的圖形主要用于專業(yè)的數(shù)據(jù)可視化和統(tǒng)計工作。1.特殊坐標(biāo)軸系特殊坐標(biāo)系包括對數(shù)坐標(biāo)系以及雙Y軸坐標(biāo)系。特殊坐標(biāo)軸系的函數(shù)如下:loglog:兩個坐標(biāo)軸都使用對數(shù)刻度;semilogx:X軸用對數(shù)刻度,Y軸用普通線性刻度;semilogy:Y軸用對數(shù)刻度,X軸用普通線性刻度;yyaxis:設(shè)置兩個Y軸進行繪圖;2.繪制特殊圖形在MATLAB中能夠繪制的特殊圖形包括:柱狀圖和面積圖、餅圖、直方圖、離散數(shù)據(jù)圖、矢量方向圖以及等高線圖等。這些特殊圖形的繪制一般都是通過調(diào)用對應(yīng)函數(shù)來完成。不同的特殊圖形繪制函數(shù)應(yīng)用不同,需要根據(jù)特殊的數(shù)據(jù)可視化和統(tǒng)計要求來選擇。

6.4基本三維繪圖MATLAB具有在三維空間展示數(shù)據(jù)的能力,很多時候需要使用MATLAB提供的若干函數(shù)進行三維數(shù)據(jù)可視化,同時還有若干種方法進行三維圖形對象屬性的設(shè)置和控制。繪制三維圖形的基本過程要比繪制二維圖形復(fù)雜了一些,基本過程如下:準(zhǔn)備需要繪制在MATLAB圖形窗體中的數(shù)據(jù);創(chuàng)建圖形窗體,并且選擇繪制數(shù)據(jù)的區(qū)域;使用MATLAB的3D繪圖函數(shù)繪制圖形或者曲線;設(shè)置調(diào)色板和投影算法;增加光照,設(shè)置材質(zhì);設(shè)置視點(viewpoint);設(shè)置繪圖坐標(biāo)軸的屬性;設(shè)置透視比;為繪制的圖形添加標(biāo)題、軸標(biāo)簽或者標(biāo)注文本等;打印或者導(dǎo)出圖形。并不是所有三維繪圖的過程都包含上面的十個步驟,在例6-18中,進行了一次最簡單的三維繪圖?!纠?-18】簡單三維繪圖—plot_3d.m。001 %plot_3d例6-18簡單三維繪圖002 %準(zhǔn)備數(shù)據(jù)003 z=0:0.1:40;004 x=cos(z);005 y=sin(z);006 clf;007 %繪制曲線008 plot3(x,y,z)009 %添加標(biāo)注010 gridon011 title('SpiralPlot-usingPLOT3')012 xlabel('x')013 ylabel('y')014 zlabel('z')該腳本文件運行的結(jié)果如圖6-75所示。例6-18中使用了函數(shù)plot3,該函數(shù)類似plot函數(shù),能夠?qū)、Y、Z坐標(biāo)繪制在三維的空間。它的基本語法如下:plot3(xdata,ydata,zdata,'clm',…)在命令行中,clm的取值和plot函數(shù)的取值完全一致。例6-18使用zlabel函數(shù)向坐標(biāo)軸添加標(biāo)簽。它的用法類似于xlabel和ylabel函數(shù)。繪制這個三維曲線時沒有進行其他復(fù)雜的操作,比如設(shè)置光線、視點和三維實體的表面材質(zhì)等操作。例6-19演示了更加復(fù)雜的繪制三維曲面過程?!纠?-19】繪制復(fù)雜的三維曲面—plot_3dfull.m。001 %準(zhǔn)備數(shù)據(jù)002 Z=peaks(20);003 %選擇圖形窗體004 figure(1);clf005 %調(diào)用3D繪圖函數(shù)006 h=surf(Z);007 %設(shè)置調(diào)色板和投影算法008 colormaphot;009 shadinginterp;010 set(h,'EdgeColor','k')011 %增加光照012 light('Position',[-2,2,20])013 lightingphong014 %設(shè)置材質(zhì)015 material([0.4,0.6,0.5,30])016 set(h,'FaceColor',[00.70.7],'BackFaceLighting','lit')017 %設(shè)置視點018 view([30,25])019 set(gca,'CameraViewAngleMode','Manual')020 %設(shè)置軸屬性021 axis([020020-88])022 set(gca,'ZTickLabel',{'Negative','','Positive'})023 %設(shè)置透視比024 set(gca,'PlotBoxAspectRatio',[2.52.51])025 %添加文本注釋026 xlabel('XAxis');ylabel('YAxis');zlabel('FunctionValue');027 title('Peaks');可以在調(diào)試狀態(tài)下運行該例子以便仔細察看每一步驟執(zhí)行之后的效果,如圖6-76所示。在例6-19的代碼中使用了很多三維圖形屬性設(shè)置的函數(shù),以及大量的圖形對象屬性。為了便于繪制三維圖形,MATLAB提供了一些函數(shù)用于特殊的三維曲面繪制。其中經(jīng)常使用的函數(shù)有mesh函數(shù)和surf函數(shù)。mesh函數(shù)用來繪制三維的線框圖,它的輸入?yún)?shù)一般為X、Y和Z三個坐標(biāo)系的數(shù)據(jù)。同時該函數(shù)還有meshc和meshz函數(shù)兩種變形。其中meshc函數(shù)用來繪制具有等高線性質(zhì)的mesh曲面,meshz函數(shù)繪制mesh曲面的參考面。這三個函數(shù)的使用參見例6-20?!纠?-20】mesh函數(shù)的應(yīng)用—mesh_example.m。001 %mesh_example例6-20mesh函數(shù)舉例002 %準(zhǔn)備數(shù)據(jù)003 [X,Y]=meshgrid(-3:.125:3);004 Z=peaks(X,Y);005 subplot(1,3,1);006 meshc(X,Y,Z);007 axis([-33-33-1010]);title('Meshc');008 subplot(1,3,2);009 meshz(X,Y,Z);010 axis([-33-33-1010]);title('MeshZ');011 subplot(1,3,3);012 mesh(X,Y,Z);013 axis([-33-33-1010]);title('Mesh');014 colormapgray015 set(gcf,'Position',);例6-20的運行結(jié)果如圖6-77所示。在例6-20中,meshgrid函數(shù)用來創(chuàng)建三維曲線繪圖原始數(shù)據(jù),它根據(jù)輸入?yún)?shù)來創(chuàng)建等間距的網(wǎng)格數(shù)據(jù)。關(guān)于meshgrid函數(shù)的詳細信息請參閱MATLAB的幫助文檔。通過例6-20的運行結(jié)果能夠明顯地看出函數(shù)mesh、meshc、meshz之間的區(qū)別。mesh函數(shù)的詳細使用方法請參閱MATLAB的幫助文檔。surf函數(shù)和mesh函數(shù)不同,surf函數(shù)能夠創(chuàng)建用色彩表示的曲面圖,而不是線框圖。而且該函數(shù)有一種變形,就是surfc,這里可將例6-20的代碼進行適當(dāng)?shù)男薷?,用surfc替換meshc,用surf替換mesh,則相應(yīng)的代碼運行得到的結(jié)果如圖6-78所示。【例6-21】其他三維繪圖函數(shù)示例—surf_3d.m。001 %surf_3d例6-21三維繪圖函數(shù)示例002 %準(zhǔn)備數(shù)據(jù)003 x=-8:0.3:8;y=x;004 [X,Y]=meshgrid(x,y);005 R=sqrt(X.^2+Y.^2)+eps;006 Z=sinc(R)./R;007 %等高線008 subplot(2,2,1)009 contourf(peaks(30),10)010 colorbar011 gridon012 title('Peaks-(CONTOURF&COLORBAR)')013 %plot3函數(shù)繪制矩陣數(shù)據(jù)014 subplot(2,2,2)015 mesh(X,Y,Z)016 gridon017 axis([-88-88-11])018 title('Sinc-(mesh)')019 %waterfall函數(shù),效果類似surfz函數(shù)020 subplot(2,2,3)021 waterfall(membrane(1));022 title('L-shapedMembrane-(WATERFALL)')023 %三維等高線024 subplot(2,2,4)025 contour3(peaks(30),25);026 title('Peaks-(CONTOUR3)')027 colormaphsv例6-21的運行結(jié)果如圖6-79所示。

6.5圖形顯示與調(diào)色板MATLAB的圖形窗體不僅能夠繪制曲線,還可以用于顯示圖片。MATLAB能夠讀取大多數(shù)常見的圖片格式,利用importdata函數(shù)即可以讀取圖片數(shù)據(jù),或者使用imread函數(shù)來讀取圖片數(shù)據(jù),例如在MATLAB命令行窗體中,鍵入下面的命令:>>img=importdata('dd.jpg');該命令將搜索路徑上名為dd.jpg的圖片文件導(dǎo)入到MATLAB的工作空間:>>whosNameSizeBytesClassAttributesimg1200x1600x35760000uint8可以看到,導(dǎo)入的圖片文件是一個8位無符號整數(shù)三維數(shù)組,它每一個元素代表了RGB三色的一個分量,每一頁上的對應(yīng)元素代表一個色彩分量,例如:>>img(1,1,:)ans(:,:,1)=19ans(:,:,2)=12ans(:,:,3)=20這里表示圖片的第一個像素上的RGB分量是19,12,20。使用MATLAB的圖形窗體顯示該圖片,如圖6-80所示。>>imagesc(img)顯示圖形還可以使用image函數(shù),在大部分情況下image函數(shù)和imagesc函數(shù)對同樣的矩陣數(shù)據(jù)處理的顯示效果沒有什么差別,而imagesc將根據(jù)圖形數(shù)據(jù)按照一定比例協(xié)調(diào)圖片的顯示。【例6-22】image函數(shù)繪制普通矩陣—image_example.m。001 %image_example例6-22使用image函數(shù)繪制普通矩陣002 A=magic(4);003 %使用默認的調(diào)色板004 image(A);005 %創(chuàng)建新的調(diào)色板006 map=hsv(16);007 %應(yīng)用調(diào)色板008 colormap(map);009 %繪制調(diào)色板的內(nèi)容010 colorbar;011 title('使用16色調(diào)色板');盡管例6-22的代碼非常短小,還是需要花費一點時間仔細研究一下。首先,腳本文件創(chuàng)建了一個具有16個元素的幻方矩陣,這個矩陣元素數(shù)值從1至16不等。在使用image函數(shù)將矩陣轉(zhuǎn)變?yōu)閳D像并且顯示在圖形窗體內(nèi)時使用了系統(tǒng)默認的調(diào)色板。然后腳本文件從MATLAB自帶的調(diào)色板中獲取了一個子集,這個子集使用hsv函數(shù)將系統(tǒng)提供的hsv調(diào)色板的前16個色彩數(shù)據(jù)取出,復(fù)制給新的調(diào)色板—map。接著使用colormap函數(shù)應(yīng)用新創(chuàng)建的調(diào)色板。其中colorbar函數(shù)將調(diào)色板的內(nèi)容繪制在圖像右側(cè),這時才得到例6-22的最終結(jié)果,如圖6-81所示。MATLAB提供了部分默認的調(diào)色板,這些調(diào)色板分別代表了一種色調(diào),用戶可以將這些調(diào)色板使用在繪圖之中。另外,在圖形圖像文件格式中,有一種是以索引色保存起來的文件,此類文件加載到MATLAB工作空間之后,都會有一個調(diào)色板矩陣。而應(yīng)用調(diào)色板和繪制色條的方法非常簡單,只要在colormap函數(shù)中應(yīng)用相應(yīng)的調(diào)色板,然后調(diào)用colorbar函數(shù)即可繪制調(diào)色板的色條。例如,將MATLAB的Logo圖片文件保存成為索引色位圖圖片,然后在MATLAB命令行窗體中鍵入:>>img=importdata('logo.bmp');>>image(img.cdata);>>colormap(img.colormap)>>colorbar('southoutside')這時圖片顯示的效果如圖6-82所示。請注意,這里導(dǎo)入圖形得到的變量img是個結(jié)構(gòu)對象數(shù)據(jù),里面分別是圖像數(shù)據(jù)cdata和調(diào)色板colormap。表6-3對MATLAB提供的默認調(diào)色板進行了總結(jié)。表6-3總結(jié)的這些調(diào)色板名稱也都是相應(yīng)的MATLAB函數(shù)。每個調(diào)色板都可以指定不同的色彩個數(shù),系統(tǒng)默認為256個。例如,創(chuàng)建一個具有128種色彩的增強色調(diào)色板,命令行如下:map=colorcube(128);例如對圖6-82所示的索引圖片使用其他調(diào)色板,可以在MATLAB命令行窗體中鍵入如下的命令:>>colormap(flip(hot(256)));則此時的圖形窗體顯示的圖像如圖6-83所示。除了MATLAB系統(tǒng)提供的這十幾種標(biāo)準(zhǔn)的調(diào)色板以外,MATLAB還允許用戶自己定義調(diào)色板。用戶自定義的調(diào)色板需要通過MATLAB提供的調(diào)色板編輯器來創(chuàng)建。在MATLAB命令行窗體中鍵入命令:>>colormapeditor若此時已經(jīng)存在打開的MATLAB圖形窗體,則調(diào)色板編輯器加載當(dāng)前圖形窗體使用的調(diào)色板,否則打開一個空白的圖形窗體,然后顯示系統(tǒng)默認使用的調(diào)色板,如圖6-84所示。用戶在編輯自己的調(diào)色板時,可以通過加載標(biāo)準(zhǔn)調(diào)色板,然后再修改其中色塊的方法來進行。修改色塊的時候,只要雙擊需要修改的色塊,系統(tǒng)就會彈出色彩選擇對話框,供用戶選擇不同的色彩。若需要刪除已有的色塊,只要用鼠標(biāo)選擇準(zhǔn)備刪除的色塊,然后按Delete鍵就可以完成操作。若需要添加色塊,只要在編輯器色彩條下方的空白處單擊鼠標(biāo),就可以向已有的調(diào)色板添加新的控制點色塊??刂泣c色塊可以在色條上任意移動,直到得到最后需要的效果。用戶自定義的調(diào)色板會保存在圖形窗體的colormap屬性中。當(dāng)保存圖形窗體時,就會把圖形窗體的調(diào)色板一起保存下來,也可以通過get函數(shù)將調(diào)色板數(shù)據(jù)獲取出來,并單獨保存起來。

6.6保存和輸出圖形6.6.1保存圖形MATLAB支持將圖形窗體內(nèi)容保存成為二進制格式的文件。為此,MATLAB提供了一種類似于MAT格式的文件用來保存MATLAB的圖形,這種文件的擴展名為*.fig。它是一種二進制的圖形格式文件,只能夠在MATLAB中使用。若需要將文件保存成為fig格式的圖形文件,則在圖形窗體中選擇File菜單下的Save或者Saveas命令,也可以直接單擊圖形窗體工具欄上的保存按鈕,在彈出的對話框中選擇保存類型為fig文件,如圖6-85所示。在對話框中給定文件名稱,然后單擊保存按鈕就可以保存文件了。打開fig文件的過程和保存文件的過程類似,都可以通過菜單命令或者工具欄的按鈕完成操作。MATLAB為保存圖形文件還提供了相應(yīng)的命令,這個命令就是saveas命令。該命令的一般語法結(jié)構(gòu)如下:saveas(h,'filename.ext');saveas(h,'filename','format');其中,h為圖形的句柄,可以使用gcf命令獲取當(dāng)前活動圖形窗體的句柄;filename為保存的文件名,注意要給出擴展名,saveas命令根據(jù)擴展名ext的不同將文件存為不同的格式。而第二種命令行格式中,format直接說明文件的保存格式,它可以是圖形文件的擴展名,也可以指定為.m或者.mfig,此時圖形窗體的內(nèi)容將被保存成為一個可調(diào)用的M文件和相應(yīng)的圖形數(shù)據(jù)fig文件。打開圖形文件就需要使用open函數(shù),open函數(shù)會根據(jù)文件的擴展名不同而調(diào)用相應(yīng)的輔助函數(shù),例如在打開fig圖形文件時,調(diào)用openfig命令。具體過程請參閱例6-23?!纠?-23】在命令行中保存打開圖形文件。在MATLAB命令行窗體中鍵入下面的命令:>>surf(peaks(30))>>%將圖形文件保存為M文件和fig文件>>saveas(gcf,'peakfile','mfig')>>%調(diào)用M文件重新顯示窗體>>peakfile>>%使用open命令打開文件>>open('peakfile.fig')上面的saveas命令執(zhí)行的時候還生成了同名的M文件,包含的代碼主要內(nèi)容是:001 functionh=peakfile002 [path,name]=fileparts(mfilename('fullpath'));003 figname=fullfile(path,[name'.fig']);004 if(exist(figname,'file')),h1=open(figname);elseh1=open([name'.fig']);end005 ifnargout>0,h=h1;end在代碼文件中不可缺少的還有大量的注釋,而M文件的代碼保證能夠可靠地打開已保存的圖形文件。6.6.2導(dǎo)出與打印圖形盡管保存fig文件非常方便,但是fig文件只能夠在MATLAB中使用,所以MATLAB可以將圖形文件保存為其他圖形格式文件。表6-4中列舉了能夠直接在圖形窗體中導(dǎo)出的圖形文件類型。為了能夠正確地將MATLAB圖形窗體內(nèi)容導(dǎo)出,可以執(zhí)行圖形窗體File菜單下的ExportSetup命令,此時將彈出MATLAB的圖形導(dǎo)出設(shè)置工具,如圖6-87所示。在這個導(dǎo)出設(shè)置對話框中,需要設(shè)置的屬性包括圖片的尺寸(Size)、渲染(Rendering)、字體(Fonts)以及線條(Lines),每個屬性都會有不同的具體內(nèi)容需要分別設(shè)置。默認地,在ExportStyles中包含了圖片導(dǎo)出的默認設(shè)置:Document和Presentation,這是MATLAB根據(jù)最常用的工具設(shè)定的導(dǎo)出格式,如果用戶導(dǎo)出的圖片恰好就是為這兩種軟件所用,則可以直接選擇這兩組默認設(shè)置。當(dāng)完成設(shè)置之后,可以將自定義的導(dǎo)出設(shè)置保存起來,在ExportStyles組別下的Saveasstylenamed文本框中給出樣式名稱,然后單擊Save按鈕就可以將選定的樣式保存起來,以后再導(dǎo)出圖形時,就可以直接利用這個樣式了。在saveas命令中,也可以使用這些擴展名來保存圖形文件,而保存圖像文件的時候需要用到表6-3所列的format字符串內(nèi)容,有的時候也可以用圖像文件的擴展名作為format參數(shù),例如將圖形文件保存成為tiff格式的文件,命令行為saveas(h,filename,'tif');或者saveas(h,filename,'tiff');MATLAB提供了另外一個功能強大的命令來保存圖形文件,這個命令就是print命令。從字面上理解,print命令的作用是將圖形文件通過打印機輸出出來,其實它也支持將圖形窗體內(nèi)容保存成其他格式的圖形文件或者數(shù)據(jù)文件,它的功能比saveas命令的功能要更加豐富,用print命令將當(dāng)前的圖形窗體內(nèi)容導(dǎo)出成為某種格式的圖像文件的命令為print(filename,formattype)其中,formattype與表6-4所列出的saveas函數(shù)format參數(shù)內(nèi)容很類似,只是在saveas的format參數(shù)字符串之前增加-d前綴。如果需要將當(dāng)前圖形窗體的內(nèi)容通過打印機打印出來,則命令為print(printer,driver)命令行中的printer是當(dāng)前系統(tǒng)已經(jīng)安裝的打印機,driver是打印驅(qū)動的名稱,在Windows系統(tǒng)內(nèi)-dwin表示黑白打印,-dwinc表示彩色打印。若將圖形文件輸出到打印機,則使用命令行:>>print這時print命令直接將圖形窗體的內(nèi)容輸出到當(dāng)前系統(tǒng)默認的打印機。如果需要將圖形窗體內(nèi)容輸出成為PostScript文件,需要指定相應(yīng)的設(shè)備,命令行:>>print–dpsfilename將圖形窗體內(nèi)容保存為黑白的PS文件,而命令行:>>print–dpscfilename可以將圖形窗體內(nèi)容保存為彩色的PS文件。pint命令還可以將圖形窗體內(nèi)容輸出到剪貼板,其命令為print('-clipboard',clipboardformat)這里的clipboardformat可以用-dbitmap、-dpdf和-demf。MATLAB還提供了一個名為printopt的M文件,該文件主要可以由系統(tǒng)管理員編輯以指明系統(tǒng)默認的打印機類型和打印目標(biāo)。當(dāng)調(diào)用它時,返回默認值的打印命令和設(shè)

溫馨提示

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

最新文檔

評論

0/150

提交評論