MATLAB 的擴(kuò)展性和機(jī)制獨(dú)立的畫圖功能是一個(gè)極其重要的功能.這個(gè)功能使數(shù)據(jù)畫圖 變得十分簡單.畫一個(gè)數(shù)據(jù)圖,首先要創(chuàng)建兩個(gè)向量,由x, y 構(gòu)成,然后使用plot 函數(shù). 例如,假設(shè)我們要畫出函數(shù)y=x2-10x+10 的圖象,定義域?yàn)椋?,10].只需要3 個(gè)語句就可 以畫出此圖.第二句用于計(jì)算y 值(注意我們用的是數(shù)組運(yùn)算符,所以可以對x 的元素一一運(yùn) 算.).最后打印出此圖. x=0:1:10; y=x.^2-10*x+15; plot(x,y); 當(dāng)執(zhí)行到plot 函時(shí),MATLAB 調(diào)用圖象窗口,并顯示圖象.如圖圖2.4. 20 表2.8 常見的MATLAB 函數(shù) 函數(shù) 描述 數(shù)學(xué)函數(shù) abs(x) 計(jì)算x 的絕對值 acos(x) 計(jì)算x 的反余弦函數(shù) angle(x) 計(jì)算復(fù)數(shù)x 的幅角 asin(x) 計(jì)算x 的反正弦函數(shù)值 atan(x) 計(jì)算x 的反正切函數(shù)值 atan2(y,x) tan??-2(y/x) cos(x) cosx exp(x) ex log(x) logex [value,index]=max(x) 返回x 中的最大值,,和它所處的位置 [value,index]=min(x) 返回x 中的最小值,,和它所處的位置 mod(x,y) 余數(shù) sin(x) sinx sqrt(x) x 的平方根 tan(x) tanx rounding(取整)函數(shù) ceil(x) fix(x) round(x) 字符轉(zhuǎn)換函數(shù) char(x) 將矩陣中的數(shù)轉(zhuǎn)化為字符,矩陣中的元素就不大于127 double(x) 將子符串轉(zhuǎn)化為矩陣 int2str(x) 將整數(shù)x 轉(zhuǎn)化為字符串形式 num2str(x) 將帶小數(shù)點(diǎn)的數(shù)轉(zhuǎn)化為一個(gè)字符型數(shù)組 str2num(x) 將字符串轉(zhuǎn)化為數(shù) 2.11.1 簡單的xy 畫圖的應(yīng)用 正如我們所看到的,在MATLAB 中畫圖是十分容易的.只要任何一對向量的長度相同,那 圖2.4 定義域?yàn)?0,10)的y=x2-10x+15 的圖象. 21 么它就可以就能可視化地畫出來.但是這還不是最后的結(jié)果,因?yàn)樗€沒有標(biāo)題,坐標(biāo)軸標(biāo)簽, 網(wǎng)格線. 給圖增加標(biāo)題和坐標(biāo)軸標(biāo)簽將會用到title, xlabel, ylable 函數(shù)。調(diào)用每個(gè)函數(shù)時(shí)將會有一 個(gè)字符串,,這個(gè)字符串包含了圖象標(biāo)題和坐標(biāo)軸標(biāo)簽的信息,。用grid 命令可使網(wǎng)格線出現(xiàn) 或消失在圖象中,grid on 代表在圖象中出現(xiàn)網(wǎng)格線,,grid off 代表去除網(wǎng)格線。例如下面的 語句將會產(chǎn)生帶有標(biāo)題,,標(biāo)簽和網(wǎng)格線的函數(shù)圖象,。結(jié)果如圖2.5 所示。 x=0:1:10; y=x.^2-10*x+15; plot(x,y); title ('Plot of y=x.^2-10*x+15'); xlabel ('x'); ylabel ('y'); grid on; 2.11.2 打印圖象 一個(gè)圖象一旦建立,,我們就可以用 print 命令在打印機(jī)上打印出這幅圖,也可以單擊圖 象窗口的打印圖標(biāo)或者在文件菜單中選擇打印項(xiàng)打印,。 print 命令的一般形式如下: print <選項(xiàng)> <文件名> 如果沒有文件名,,這個(gè)命令就會命令打印機(jī)打印當(dāng)前圖片。如果帶有文件名,,那么這個(gè) 命令就會打印這個(gè)圖片到指定的文件,。有許多的選項(xiàng)指定輸出到文件或打印機(jī)的格式。一個(gè) 最重要的選項(xiàng)是-dtiff.這個(gè)選項(xiàng)指定輸出圖片的格式是標(biāo)簽影像檔案格式(TIFF),。因?yàn)樵?br>PC,,Mac 和UNIX 平臺上的文字處理軟件都支持這種格式。這就使得在文檔中插入MATLAB 圖象變得十分的簡單,。下面這個(gè)命令將會創(chuàng)建一個(gè)TIFF 格式的當(dāng)前圖象的圖片,,并保存在 一個(gè)叫my_image.tif 的文件中 print –dtiff my_image.tif 圖2.5 帶有網(wǎng)格線,標(biāo)簽的畫圖 22 你也可以選擇圖象窗口中的“file/export”選項(xiàng)來創(chuàng)建tiff 圖片,。 2.11.3 聯(lián)合作圖 在同一坐標(biāo)內(nèi)作出多個(gè)函數(shù)的圖象的情況是十分常見的,。假如,你要在同一坐標(biāo)軸內(nèi)作 出f(x)=sin2x 和他的微分函數(shù)的圖象,。它的微分式為 x x dt d sin 2 = 2cos2 (2.4) 在同一坐標(biāo)系內(nèi)打印兩個(gè)函數(shù),,我們必須產(chǎn)生一系列的x 值和每一個(gè)函數(shù)分別對應(yīng)的y 值,。然后利用這些值畫出圖象,plot 函數(shù)的格式如下所示: x=0:pi/100:2*pi; y1=sin(2*x); y2=2*cos(2*x); plot (x,y1,x,y2); 所得圖像如圖圖2.6 所示,。 2.11.4 線的顏色,線的形式,符號形式和圖例 MATLAB 允許程序員選擇軌跡的顏色,軌跡的形式,和符號的類型.在X,Y 向量參數(shù)后帶 有這些屬性的字符串的plot 函數(shù),可以選擇這些細(xì)節(jié). 這些屬性字符串包括三個(gè)方面, 第一方面指定軌跡的顏色, 第二方面指定符號的類型, 第三方面指定線的類型. 各種顏色,符號和線的類型將在表2.9 中顯示. 表2.9 圖象的顏色,,標(biāo)記(符號)類型,線型 顏色 標(biāo)記類型 線型 y 黃色 . 點(diǎn) - 實(shí)線 m 品紅色 o 圈 : 點(diǎn)線 c 青綠色 x ×號 -. 畫點(diǎn)線 r 紅色 s 正方形 -- 虛線 g 綠色 d 菱形 <none> 無 圖2.6 y1=sin(2*x) y2=2cos(2*x)的圖象,。 23 顏色 標(biāo)記類型 線型 b 藍(lán)色 v 倒三角 w 白色 ^ 正三角 k 黑色 > 三角(向右) < 三角(向左) p 五角星 h 六線形 <none> 無 這些屬性字符串可以任意的混合使用.如果有多個(gè)函數(shù),每個(gè)函數(shù)都有它自己的屬性字符 串. 例如,函數(shù)y=x2-10x+15 的圖象,曲線為紅色的虛線,重要的數(shù)值用藍(lán)色的小圓圈表示. x=0:1:10; y=x.^2 -10.*x +15; plot(x,y,'r--',x,y,'bo'); 我們可以用legend 來制作圖例,。它的基本的形式如下 legend('string1','string2',...,pos) 其中string1,string2 等等是與軌跡標(biāo)簽名,而pos 是一個(gè)整數(shù),,用來指定圖例的位置,。 這些整數(shù)所代表的意義在表2.10 中的列出。用legend off 命令將能去除多余的圖例,。一個(gè)完 整的圖象例子將會顯示圖2.7 中,,產(chǎn)生這個(gè)圖象的語句如下所示。圖2.7 在同一坐標(biāo)系內(nèi),, 顯示了f(x)=sin2x 和它的微分函數(shù)的圖象,,用黑實(shí)線代表f(x),用紅虛線代表它的微分函數(shù)。 圖中有標(biāo)題,,坐標(biāo)軸標(biāo)簽和網(wǎng)格線,。 x=0:pi/100:2*pi; y1=sin(2*x); y2=2*cos(2*x); plot(x,y1,'k-',x,y2,'b--'); title(' Plot of f(x)=sin(2x) and its derivative'); xlabel('x'); ylabel('y'); 24 legend('f(x)','d/dx f(x)') grid on; 2.11.5 對數(shù)尺度 打印數(shù)據(jù)既可以用對數(shù)尺度,也可以用線性尺度,。在x,y 軸上使用這兩種尺度的一種或兩種 可以組合形成4 種不同的坐標(biāo)系,。每一種組合者有一個(gè)特定的函數(shù)。 1.plot 函數(shù)的x,y 均用線性尺度 2.semilog 函數(shù)x 軸用對數(shù)尺度,,y 軸將用線性尺度 3.semiloge 函數(shù)x 軸用線性尺度,,y 軸用對數(shù)尺度 4.loglog 函數(shù)兩坐標(biāo)軸將會都用對數(shù)尺度。 這四個(gè)函數(shù)在意義上是等價(jià)的,,只是坐標(biāo)軸的類型不同,。每一個(gè)圖象的例子如圖2.8 所 示。 圖2.7 在同一坐標(biāo)系內(nèi),,顯示了f(x)=sin2x 和它的微分函數(shù)的圖象 25 表2.10 在legend 命令中pos 的值 值 意義 0 自動尋找最佳位置,,至少不與數(shù)據(jù)沖突 1 在圖象的右上角 2 在圖象的左上角 3 在圖象的左下角 4 在圖象的右下角 -1 在圖象的右邊 2.12 例子 下面的例子將向大家介紹如何用 MATLAB 解決問題。 例2.3 (溫度轉(zhuǎn)換)設(shè)計(jì)一個(gè)MATLAB 程序,,讀取一個(gè)華氏溫度的輸入,,輸出開爾文溫度。 答案 華氏溫度和開爾文溫度的轉(zhuǎn)換關(guān)系式可在物理學(xué)課本中找到,。其關(guān)系式為: ( ) 32.0 273.15 9 ( ) 5 + ?? T 開爾文= ? T 攝氏度? (2.5) 在物理學(xué)參考書中舉了一些例子,,我們可以用來檢驗(yàn)我們程序是否正確。例如 華氏度(oC) 開爾文(K) 沸水的溫度 212 373.15 冰水混合物的溫度 -110 194.26 我們設(shè)計(jì)程序的步驟如下 1.提示用戶鍵入華氏溫度值 2.讀取輸入值 3.通過關(guān)系式轉(zhuǎn)換為開氏溫度 4.輸出結(jié)果,,結(jié)束 我們將會用input 函數(shù)輸入華氏溫度,,用fprintf 函數(shù)輸出結(jié)果,。 % Script file:temp_conversion.m 圖2.8 四種不同畫圖函數(shù)的對比。 26 % % Purpose: % To convert an input temperature from degrees Fahrenheit to % an output temperature in kelvins. % % Record of revisions: % Date Programmer Description of change % ==== ========= ================ % 12/01/97 S.J.Chapman Original code % %Define variables: % temp_f --Temperature in degrees Fahrenheit % temp_k --Temperature in kelvins %Prompt the user for the input temperature. temp_f=input('Enter the temperature in degrees Fahrenheit:'); %Converttokelvins. temp_k=(5/9)*(temp_f-32)+273.15; %Writeouttheresult. fprintf('%6.2f degrees Fahrenheit = %6.2f kelvins.\n',... temp_f,temp_k); 我們輸入上面的例子中的華氏溫度值,,以檢測程序的正確性,。注意用戶的輸入值已用黑 體字標(biāo)出。 >> temp_conversion Enter the temperature in degrees Fahrenheit:212 212.00 degrees Fahrenheit = 373.15 kelvins. >> temp_conversion Enter the temperature in degrees Fahrenheit:-110 -110.00 degrees Fahrenheit = 194.26 kelvins. 這個(gè)結(jié)果和物理教科書的結(jié)果相同,。在本程序中,我們重復(fù)出帶單位的輸入值和輸出值. 只有帶上單們神經(jīng)質(zhì)輸出才有意義. 按照慣例,任何輸入變量和輸出變量的單位都應(yīng)打印出來. 好的編程習(xí)慣 當(dāng)你讀取和寫入數(shù)據(jù)時(shí),使用適當(dāng)?shù)膯挝?br> |
|