




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一部分MATLAB基礎(chǔ)與入門第一章MATLAB簡介在科學(xué)和工程應(yīng)用中,往往要進行大量的科學(xué)計算,其中包括以矩陣為基礎(chǔ)的數(shù)學(xué)計算;這些計算一般來說難以用手工精確和快捷地進行,而且眾多工程問題一般只要求得到滿足精度的近似解就行,從而借助于計算機編寫相應(yīng)的程序進行近似計算就顯得很有必要。目前用Basic、Fortran和C編制計算程序較多,但其既需要對有關(guān)算法有深刻的了解,還需要熟練掌握所用語言的語法和編程技巧;這對較多科學(xué)和工程技術(shù)人員而言,同時具備這兩方面的技能就很有難度;而且用上述語言編制程序不但復(fù)雜,一般需要大量的人力和物力,而且影響工作進程和效率,為此,美國Mathwork公司于1967年推出了“MatrixLaboratory”(即矩陣實驗室,縮寫為Matlab)軟件包,并不段進行更新和擴充,目前已成為全球應(yīng)用最廣泛最流行的軟件之一。目前最新的6.5版本(windows環(huán)境)是一種功能強、效率高便于進行科學(xué)和工程計算的交互式軟件包。其中包括:一般數(shù)值分析、矩陣運算、概率統(tǒng)計、建模與系統(tǒng)控制和優(yōu)化等應(yīng)用程序。并集應(yīng)用程序和圖形于一便于使用的集成環(huán)境中,在此環(huán)境下所解問題的Matlab語言表述形式和其數(shù)學(xué)表達形式相同,不需要按傳統(tǒng)的方法編程,就可解決工程、科學(xué)計算和數(shù)學(xué)學(xué)科中的許多問題。。不過,Matlab作為一種新的計算機語言,要想運用自如,充分發(fā)揮它的威力,也許先系統(tǒng)地學(xué)習(xí)它。為此,本書的第一部分主要為了使讀者能夠掌握Matlab的基礎(chǔ),并在后面的不斷應(yīng)用中,再挖掘其內(nèi)在的潛力。首先應(yīng)該相信的是,由于使用Matlab編程運算與人進行科學(xué)計算的思路和表達方式完全一致,從而學(xué)習(xí)Matlab語言不象學(xué)習(xí)其它高級語言——如Basic、Fortran和C等那樣難以掌握。第二章MATLAB應(yīng)用開發(fā)環(huán)境在安裝完MATLAB后,在桌面上會有一快捷方式MATLAB.exe,如下圖所示:雙擊MATLAB.exe就可運行MATLAB,初始窗口如下:從上圖中可以看出,MATLAB包含5種工具界面:發(fā)布平臺(LaunchPad)Matlab的發(fā)布平臺為用戶提供對工具箱、演示程序和文檔的輕松訪問,雙擊“工具箱”、“演示程序”和“幫助”等對應(yīng)的圖標就可獲得用戶所需的操作。工作平臺瀏覽器(workspace)工作平臺瀏覽器與發(fā)布平臺共享一個界面,通過標簽切換可選則其一。Matlab工作平臺包括一些Matlab運行過程中用到并儲存于內(nèi)存中的變量(稱為數(shù)組)集合。用戶通過使用函數(shù)、運行M文件或裝載將變量保存到工作平臺中。使用工作平臺瀏覽器或函數(shù)who和whos來查看工作平臺中的變量信息。使用菜單命令或clear函數(shù)來刪除平臺中的變量。Matlab運行結(jié)束后工作平臺不被保持,如果希望在以后的Matlab運行過程中使用該平臺,可以使用菜單命令或函數(shù)save將平臺保存為一個mat文件,文件的擴展名為.mat,讀取mat文件可以使用菜單命令或函數(shù)load。在工作平臺瀏覽器中右擊一個變量可以看到行編輯器,使用該編輯器可對工作平臺的一維或二維常數(shù)數(shù)組、字符串或字符串?dāng)?shù)組元素進行編輯和查看。歷史命令(CommandHistory)歷史命令窗口中顯示了最近在命令窗口運行過的函數(shù)的日志,歷史命令窗口包括在當(dāng)前回話和前面回話中執(zhí)行過的所有函數(shù)的記錄。每一個回話的時間和日期顯示在這個回話歷史的所有記錄上面,利用滾動條、向上方向鍵或者向下方向鍵可以瀏覽歷史命令窗口的全部內(nèi)容。當(dāng)內(nèi)容太多,很難找到需要的函數(shù)時,就需要刪除一些不用的條目。當(dāng)前目錄瀏覽器(CurrentDirectory)當(dāng)前目錄瀏覽器與歷史命令公用一個窗口,通過標簽切換可選則其一。Matlab文件的操作使用當(dāng)前目錄并使用搜索路徑作為參考點,用戶希望運行的任何文件都必須位于當(dāng)前路徑或搜索路徑內(nèi)。當(dāng)前目錄瀏覽器用來搜索、查看、打開或修改Matlab相關(guān)路徑。另外,也可以通過函數(shù)dir、cd和delete來進行路徑操作;Matlab使用搜索路徑尋找m文件和其他Matlab相關(guān)文件,通常Matlab提供的文件和工具箱都包括在搜索路徑內(nèi)。使用桌面菜單File中的SetPath選項來修改或添加搜索路徑,函數(shù)path,addpath,rmpath也可分別用來查看添加和刪除搜索路徑。命令窗口(CommandWindow)命令窗口是Matlab的重要組成部分,是用戶和Matlab交互使用最多的工具。命令窗口可以用來輸入變量和運行函數(shù)以及m文件。如果需要,用戶還可以定義該窗口的輸入輸出特性。由于命令窗口如此重要,下面分別介紹命令窗口的菜單欄和命令輸入?yún)^(qū)等。從上圖可以看出,窗口的菜單欄由File、View、Web、Window和Help菜單組成。1.File菜單單擊菜單欄上的File菜單,顯示如下圖所示的下拉式子菜下面介紹各子菜單的作用和功能。New選項鼠標移到File選項的下拉式子菜單New選項,New選項將會向右拉出四項子菜單項:M-file、Figure、Model和GUI。單擊M-file將打開指定的編輯器,并自動打開一個空白M文件(M文件是包含matlab源代碼的文本文件);單擊Figure選項將建立一個空白圖形窗口;單擊Model選項將自動打開防真庫和一個用于建立新模型的窗口(用于系統(tǒng)防真);單擊GUI選項,matlab將會打開圖形界面控制面板,在圖形界面控制面板里,用戶可以通過選種面板里的圖形模板,然后在打開的圖形窗口中根據(jù)需要繪制各種界面元素,生成精美的圖形界面;Open選項單擊Open選項,matlab將用指定的編輯器打開一個已經(jīng)建立的.m文件、.fig文件或.mdl文件等。CloseCommandWindow選項只是關(guān)閉MATLAB包含6種工具界面中的命令窗口這一個界面,而其他界面保持,若再單擊OpenSelection選項,Matlab將用指定的編輯器打開該M文件。ImportData選項單擊該選項將打開一個目錄框,在目錄框中列出所選目錄下的后綴為.Mat(默認)的文件,選中某個文件后,將把該文件中保存的變量載入到當(dāng)前空間。SaveWorkspaceAs…選項把當(dāng)前工作空間的所有變量用后綴為.Mat或其他后綴的ASCll文件保存起來,將來可用Importdata…菜單選項進行裝載,單擊該選項將彈出一個目錄框,用戶通過該目錄框選折文件的存儲目錄和名字。SetPath…選項單擊該選項,將打開Matlab的路徑瀏覽器,通過路徑瀏覽器可以更改Matlab執(zhí)行命令時的搜索路徑。Preferences選項單擊該選項,將打開參數(shù)設(shè)置的對話框,通過設(shè)置其中的選項,可以調(diào)整命令編輯區(qū)的顯示格式,包括數(shù)字格式、編輯器設(shè)置、幫助目錄設(shè)置、命令窗口字體、背景色設(shè)置等選項。Print選項該選項用于打印命令窗口中的內(nèi)容,也可以設(shè)置一些打印參數(shù)。PrintSelection選項當(dāng)選中命令編輯區(qū)的一部分后,單擊該選項即可按照設(shè)置進行打印。ExitMATLAB選項單擊ExitMATLAB選項,將關(guān)閉Matlab。2.Edit菜單單擊菜單欄上的Edit菜單,將出現(xiàn)一個如圖2-9所示的下拉菜單。其中Undo、Redo、Cut、Copy和Paste項的作用分別進行撤消上一次操作、重做上一次操作、剪切、復(fù)制、粘貼等常規(guī)編輯操作。在命令編輯區(qū)輸入命令出現(xiàn)錯誤時,選中想刪除的內(nèi)容,再單擊Clear選項,將清除選中的內(nèi)容(已經(jīng)敲“回車”鍵的除外)。SelectAll選項用于選定文本編輯區(qū)的所有內(nèi)容,以便進一步操作。命令內(nèi)容很亂時,可用ClearCommandWindow、ClearCommandHistory、ClearWorkspace項清除CommandWindow、CommandHistory、Workspace的全部內(nèi)容。3.View和Window菜單提供了一些簡單的功能,控制Matlab的桌面和窗口。4.Web菜單提供了到Matlab網(wǎng)站的幾個連接。5.Help菜單包括MatlabHelp、UsingCommandWindow、Demos、AboutMatlab等選項。MatlabHelp選項:將打開Matlab的幫助窗口,幫助窗口顯示了幫助內(nèi)容分類信息。UsingCommandWindow:直接將幫助內(nèi)容連接到命令窗口使用的幫助文檔。Demos選項:單擊Demos項時,可以演示Matlab提供的例子,熟悉相關(guān)部分的用法。AboutMatlab選項:單擊AboutMatlab將打開關(guān)于Matlab6的版本和版權(quán)等信息。第三章MATLAB語言基礎(chǔ)MATLAB建立在向量、數(shù)組和矩陣的基礎(chǔ)上,使用方便,人機界面直觀,輸出結(jié)果可視化,矩陣是MATLAB的核心。1.變量MATLAB中變量的命名規(guī)則是:(1)變量名必須是不含空格的單個詞;(2)變量名區(qū)分大小寫;(3)變量名最多不超過19個字符;(4)變量名必須以字母打頭,之后可以是任意字母、數(shù)字或下劃線,變量名中不允許使用標點符號。2.特殊變量表特殊變量Ans取用于結(jié)果的缺省變量名值Pi圓周率計算機的最小數(shù),當(dāng)和1相加就產(chǎn)生一個比1大的數(shù)EpsFlopsInf浮點運算數(shù)無窮大,如1/0不定量,如0/0i=j=NaNI,jNargin所用函數(shù)的輸入變量數(shù)目所用函數(shù)的輸出變量數(shù)目NargoutRealminRealmax最小可用正實數(shù)最大可用正實數(shù)3.數(shù)學(xué)運算符號及標點符號+—*加法運算,適用于兩個數(shù)或兩個同階矩陣相加.減法運算乘法運算.*/點乘運算除法運算./點除運算^乘冪運算.^\點乘冪運算反斜杠表示左除.(1)MATLAB的每條命令后,若為逗號或無標點符號,則顯示該條命令運行的結(jié)果;若命令后為分號,則運行結(jié)果不顯示;(2)“%”后面所有文字為注釋;(3)“...”表示續(xù)行;函數(shù)sin(x)cos(x)tan(x)abs(x)min(x)sqrt(x)名稱函數(shù)asin(x)acos(x)atan(x)max(x)sum(x)exp(x)名稱正弦函數(shù)余弦函數(shù)正切函數(shù)絕對值最小值開平方反正弦函數(shù)反余弦函數(shù)反正切函數(shù)最大值元素的總和以e為底的指數(shù)以10為底的對數(shù)取整log(x)自然對數(shù)符號函數(shù)sign(x)fix(x)5.M文件MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某一個函數(shù)的各種性態(tài),需要為MATLAB定義新函數(shù),為此必須編寫函數(shù)文件.函數(shù)文件是文件名后綴為M的文件,這類文件的第一行必須是一特殊字符function開始;格式為:function因變量名=函數(shù)名(自變量名)函數(shù)值的獲得必須通過具體的運算實現(xiàn),并賦給因變量.M文件建立方法:1.在Matlab中,點:File->New->M-file2.在編輯窗口中輸入程序內(nèi)容Matlab的應(yīng)用程序也以M文件保存。例3.1定義函數(shù)f(x1,x2)=100(x2-x12)2+(1-x1)21.建立M文件:fun.mfunctionf=fun(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^22.可以直接使用函數(shù)fun.m例3.2計算f(1,2),只需在Matlab命令窗口鍵入命令:x=[12]fun(x)二、數(shù)組1、創(chuàng)建簡單的數(shù)組x=[abcdef]x=first:last創(chuàng)建包含指定元素的行向量創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=first:increment:lastx=linspace(first,last,n)創(chuàng)建從first開始,到last結(jié)束,有n個元素的行向量x=logspace(first,last,n)創(chuàng)建從開始,到結(jié)束,有n個元素的對數(shù)分隔行向量.清單:x=[123458718]y=1:7z=3:2:9v=[yz]u=linspace(2,9,11)結(jié)果:x=123458718y=1234567z=3579v=12345673579u=2.002.703.404.104.805.506.206.907.608.309.00(1)訪問一個元素:x(i)表示訪問數(shù)組x的第i個元素.(2)訪問一塊元素:x(a:b:c)表示訪問數(shù)組x的從第a個元素開始,以步長為b到第c個元素(但不超過c),b可以為負數(shù),b缺損時為1.(3)直接使用元素編址序號.x([abcd])表示提取數(shù)組x的第a、b、c、d個元素構(gòu)成一個新的數(shù)組[x(a)x(b)x(c)x(d)].清單:x=1:9y=x(2:2:8)z=[x(1)x(6)x(8)]結(jié)果:x=123456789y=2468z=168前面例子中的數(shù)組都是一行數(shù)列,是行方向分布的.稱之為行向量.數(shù)組也可以是列向量,它的數(shù)組操作和運算與行向量是一樣的,唯一的區(qū)別是結(jié)果以列形式顯示.;產(chǎn)生列向量有兩種方法:直接產(chǎn)生例c=[1;2;3;4]轉(zhuǎn)置產(chǎn)生例b=[1234];c=b’說明:以空格或逗號分隔的元素指定的是不同列的元素,而以分號分隔的元素指定了不同行的元素;2、數(shù)組的運算數(shù)組對標量的加、減、乘、除、乘方是數(shù)組的每個元素對該標量施加相應(yīng)的加、減、乘、除、乘方設(shè):a=[a1,a2,…,an],c=標量則:a+c=[a1+c,a2+c,…,an+c]a.*c=[a1*c,a2*c,…,an*c]a./c=[a1/c,a2/c,…,an/c](右除)a.\c=[c/a1,c/a2,…,c/an](左除)a.^c=[a1^c,a2^c,…,an^c]c.^a=[c^a1,c^a2,…,c^an]清單:a=[1234];c=2;a1=a+ca2=a*ca3=a./ca4=a.\ca5=a.^ca6=c.^a結(jié)果:a1=3456a2=2468a3=0.50001.00001.50002.0000a4=2.00001.00000.66670.5000a5=14916a6=24816當(dāng)兩個數(shù)組有相同維數(shù)時,加、減、乘、除、冪運算可按元素對元素方式進行的,不同大小或維數(shù)的數(shù)組是不能進行運算的.設(shè):a=[a1,a2,…,an],b=[b1,b2,…,bn]則:a+b=[a1+b1,a2+b2,…,an+bn]a.*b=[a1*b1,a2*b2,…,an*bn]a./b=[a1/b1,a2/b2,…,an/bn]a.\b=[b1/a1,b2/a2,…,bn/an]a.^b=[a1^b1,a2^b2,…,an^bn]清單:a=[222];b=[333];c1=a+bc2=a.*bc3=a./bc4=a.\bc5=a.^b結(jié)果:c1=555c2=666c3=0.66670.66670.6667c4=1.50001.50001.5000c5=888三、矩陣逗號或空格用于分隔某一行的元素,分號用于區(qū)分不同的行.除了分號,在輸入矩陣時,按Enter鍵也表示開始一新行.輸入矩陣時,嚴格要求所有行有相同的列.例3.2m=[1234;5678;9101112]p=[111122223333]特殊矩陣的建立:a=[]產(chǎn)生一個空矩陣,當(dāng)對一項操作無結(jié)果時,返回空矩陣,空矩陣的大小為零.b=zeros(m,n)產(chǎn)生一個m行、n列的零矩陣c=ones(m,n)產(chǎn)生一個m行、n列的元素全為1的矩陣d=eye(m,n)產(chǎn)生一個m行、n列的單位矩陣清單:m=[1234;5678;9101112]p=[111122223333]a=[]b=zeros(2,3)c=ones(2,3)d=eye(2,3)e=eye(3,3)結(jié)果:m=123456789101112p=111122223333a=[]b=000000c=111111d=100010e=100010001矩陣中元素的操作(1)矩陣A的第r行:A(r,:)(2)矩陣A的第r列:A(:,r)(3)依次提取矩陣A的每一列,將A拉伸為一個列向量:A(:)(4)取矩陣A的第i1~i2行、第j1~j2列構(gòu)成新矩陣:A(i1:i2,j1:j2)(5)以逆序提取矩陣A的第i1~i2行,構(gòu)成新矩陣:A(i2:-1:i1,:)(6)以逆序提取矩陣A的第j1~j2列,構(gòu)成新矩陣:A(:,j2:-1:j1)(7)刪除A的第i1~i2行,構(gòu)成新矩陣:A(i1:i2,:)=[](8)刪除A的第j1~j2列,構(gòu)成新矩陣:A(:,j1:j2)=[](9)將矩陣A和B拼接成新矩陣:[AB];[A;B]清單:a=[123;456;789];a1=a(2,:)a2=a(:,2)a3=a(:)a4=a(1:2,2:3)a5=a(2:-1:1,:)a6=a(:,3:-1:2)a7=a;a7(1:2,:)=[]a8=a;a8(:,1)=[]a9=[aa2]a10=[a;a1]結(jié)果:a1=456a2=258a3=147258369a4=2356a5=456123a6=326598a7=789a8=235689a9=123245657898a10=1234567894563、矩陣的運算(1)標量-矩陣運算同標量-數(shù)組運算。(2)矩陣-矩陣運算[1]元素對元素的運算,同數(shù)組-數(shù)組運算。[2]矩陣運算:矩陣加法:A+B矩陣乘法:A*B方陣的行列式:det(A)方陣的逆:inv(A)方陣的特征值與特征向量:[V,D]=eig[A]清單:a=[123456];b=[121212];c1=a+ac2=a*bc=[273;394;153]c3=det(c)c4=inv(c)[v,d]=eig(c)結(jié)果:c1=24681012c2=6121530c=273394153c3=-3c4=-2.33332.0000-0.33331.6667-1.0000-0.3333-2.00001.00001.0000v=-0.5515-0.7857-0.2743-0.73090.4412-0.3391-0.4020-0.43370.8999d=3.463500-0.274700000.8112四、關(guān)系與邏輯運算關(guān)系操作符<說明小于<=小于或等于>大于大于或等于等于>===~=不等于2、邏輯運算符邏輯操作符&說明與︱或~非MATLAB提供三種決策或控制流結(jié)構(gòu):for循環(huán)、while循環(huán)、if-else-end結(jié)構(gòu).這些結(jié)構(gòu)經(jīng)常包含大量的MATLAB命令,故經(jīng)常出現(xiàn)在MATLAB程序中,而不是直接加在MATLAB提示符下.a、for循環(huán):允許一組命令以固定的和預(yù)定的次數(shù)重復(fù)forx=array{commands}end在for和end語句之間的命令串{commands}按數(shù)組(array)中的每一列執(zhí)行一次.在每一次迭代中,x被指定為數(shù)組的下一列,即在第n次循環(huán)中,x=array(:,n)例3.3對n=1,2,…,10,求xn=的值;清單:forn=1:10x(n)=sin(n*pi/10);endx結(jié)果:b、While循環(huán)與for循環(huán)以固定次數(shù)求一組命令相反,while循環(huán)以不定的次數(shù)求一組語句的值.whileexpression{commands}end只要在表達式(expression)里的所有元素為真,就執(zhí)行while和end語句之間的命令串{commands}.例3.4設(shè)銀行年利率為11.25%。將10000元錢存入銀行,問多長時間會連本帶利翻一番?清單:money=10000;years=0;whilemoney<20000years=years+1;money=money*(1+11.25/100);endyearsmoney結(jié)果:years=7money=2.1091e+004c、If-Else-End結(jié)構(gòu)(1)有一個選擇的一般形式是:ifexpression{commands}end如果在表達式(expression)里的所有元素為真,就執(zhí)行if和end語句之間的命令串{commands}.先建立M文件fun1.m定義函數(shù)f(x),再在Matlab命令窗口輸入fun1(2),fun1(-1)即可。清單:functionf=fun1(x)ifx>1f=x^2+1endifx<=1f=2*xend輸入:fun1(2),fun1(-1)結(jié)果:5-2if(expression1)else{commands}endendend先建立M文件fun2.m定義函數(shù)f(x),再在Matlab命令窗口輸入fun2(2),fun2(0.5),fun2(-1)即可。清單:functionf=fun2(x)ifx>1f=x^2+1elseifx<=0f=x^3elsef=2*xendend輸入:fun2(2),fun2(0.5),fun2(-1)結(jié)果:51-1第四章MATLAB作圖&1、二維圖形1.曲線圖plot(X,Y)--畫實線X,Y是向量,分別表示點集的橫坐標和縱坐標,命令plot(X,Y,S)描繪該點集所表示的曲線,其線型S確定如下:y黃色m洋紅c藍綠色r紅色.點-連線o圈:短虛線xx-符號+加號-.長短線--長虛線例4.1在[0,2*pi]用紅線畫sin(x),用綠圈畫cos(x)清單:x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,'r',x,z,’g0')結(jié)果:2.符號函數(shù)(顯函數(shù)、隱函數(shù)和參數(shù)方程)畫圖(1)ezplotezplot(‘f(x)’,[a,b])表示在a<x<b繪制顯函數(shù)f=f(x)的函數(shù)圖ezplot(‘f(x,y)’,[xmin,xmax,ymin,ymax])表示在區(qū)間xmin<x<xmax和ymin<y<ymax繪制隱函數(shù)f(x,y)=0的函數(shù)圖ezplot(‘x(t)’,’y(t)’,[tmin,tmax])表示在區(qū)間tmin<t<tmax繪制參數(shù)方程x=x(t),y=y(t)的函數(shù)圖例4.2在[0,pi]上畫y=cos(x)的圖形清單:ezplot(‘sin(x)’,[0,pi])結(jié)果:例4.3在[0,2*pi]上畫,星形圖清單:ezplot(‘cos(t)^3’,’sin(t)^3’,[0,2*pi])結(jié)果:例4.4在[-2,0.5],[0,2]上畫隱函數(shù)的圖清單:ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2])結(jié)果:(2)fplotfplot(‘fun’,lims)表示繪制字符串fun指定的函數(shù)在lims=[xmin,xmax]的圖形.注意:[1]fun必須是M文件的函數(shù)名或是獨立變量為x的字符串.[2]fplot函數(shù)不能畫參數(shù)方程和隱函數(shù)圖形,但在一個圖上可以畫多個圖形。例4.5在[-1,2]上畫的圖形清單:functionY=myfun1(x)Y=exp(2*x)+sin(3*x.^2)fplot(‘myfun1’,[-1,2])結(jié)果:例4.6在[-2,2]范圍內(nèi)繪制函數(shù)tanh的圖形清單:fplot(‘tanh’,[-2,2])結(jié)果:例4.7x、y的取值范圍都在[-,],畫函數(shù)tanh(x),sin(x),cos(x)的圖形清單:fplot(‘[tanh(x),sin(x),cos(x)]’,2*pi*[-11–11])結(jié)果:在很多工程問題中,通過對數(shù)據(jù)進行對數(shù)轉(zhuǎn)換可以更清晰地看出數(shù)據(jù)的某些特征,在對數(shù)坐標系中描繪數(shù)據(jù)點的曲線,可以直接地表現(xiàn)對數(shù)轉(zhuǎn)換.對數(shù)轉(zhuǎn)換有雙對數(shù)坐標轉(zhuǎn)換和單軸對數(shù)坐標轉(zhuǎn)換兩種.用loglog函數(shù)可以實現(xiàn)雙對數(shù)坐標轉(zhuǎn)換,用semilogx和semilogy函數(shù)可以實現(xiàn)單軸對數(shù)坐標轉(zhuǎn)換.loglog(Y)表示x、y坐標都是對數(shù)坐標系表示x坐標軸是對數(shù)坐標系表示y坐標軸是對數(shù)坐標系semilogx(Y)semilogy(…)plotyy有兩個y坐標軸,一個在左邊,一個在右邊例4.8用方形標記創(chuàng)建一個簡單的loglog清單:x=logspace(-1,2);loglog(x,exp(x),’-s’)gridon%標注格柵結(jié)果:例4.9創(chuàng)建一個簡單的半對數(shù)坐標圖清單:x=0:.1:10;semilogy(x,10.^x)結(jié)果:例4.10繪制y=x3的函數(shù)圖、對數(shù)坐標圖、半對數(shù)坐標圖;清單:x=[1:1:100];subplot(2,3,1);plot(x,x.^3);gridon;title'plot-y=x^3';subplot(2,3,2);loglog(x,x.^3);gridon;title'loglog-logy=3logx';subplot(2,3,3);plotyy(x,x.^3,x,x);gridon;title'plotyy-y=x^3,logy=3logx';subplot(2,3,4);semilogx(x,x.^3);gridon;title'semilogx-y=3logx';subplot(2,3,5);semilogy(x,x.^3);gridon;title'semilogy-logy=x^3';結(jié)果:空間曲線x,y,z是n維向量,分別表示曲線上點集的橫坐標、縱坐標、函數(shù)值;s指定顏色、線形等例4.11在區(qū)間[0,10*pi]畫出參數(shù)曲線x=sin(t),y=cos(t),z=t.清單:t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)rotate3d%旋轉(zhuǎn)結(jié)果:其中x,y,z是都是m*n矩陣,其對應(yīng)的每一列表示一條曲線.例4.12畫多條曲線觀察函數(shù)Z=(X+Y).^2.清單:x=-3:0.1:3;y=1:0.1:5;[X,Y]=meshgrid(x,y);Z=(X+Y).^2;plot3(X,Y,Z)結(jié)果:(這里meshgrid(x,y)的作用是產(chǎn)生一個以向量x為行、向量y為列的矩陣)空間曲面(1)surf(x,y,z)畫出數(shù)據(jù)點(x,y,z)表示的曲面例4.13畫函數(shù)Z=(X+Y).^2的圖形.清單:x=-3:0.1:3;y=1:0.1:5;[X,Y]=meshgrid(x,y);Z=(X+Y).^2;surf(X,Y,Z)shadingflat%將當(dāng)前圖形變得平滑結(jié)果:(2)Mesh(x,y,z)畫網(wǎng)格曲面例4.14畫出曲面Z=(X+Y).^2在不同視角的網(wǎng)格圖清單:x=-3:0.1:3;y=1:0.1:5;[X,Y]=meshgrid(x,y);Z=(X+Y).^2;mesh(X,Y,Z)結(jié)果:(3)meshz(X,Y,Z)在網(wǎng)格周圍畫一個curtain圖(如,參考平面)例4.15繪peaks的網(wǎng)格圖[X,Y]=meshgrid(-3:.125:3);Z=peaks(X,Y);Meshz(X,Y,Z)結(jié)果:圖形處理(1)GRIDON:加格柵在當(dāng)前圖上GRIDOFF:刪除格柵(2)hh=xlabel(string):在當(dāng)前圖形的x軸上加圖例stringhh=ylabel(string):在當(dāng)前圖形的y軸上加圖例stringhh=zlabel(string):在當(dāng)前圖形的z軸上加圖例stringhh=title(string):在當(dāng)前圖形的頂端上加圖例string例4.16在區(qū)間[0,2*pi]畫sin(x)的圖形,并加注圖例“自變量X”、“函數(shù)Y”、“示意圖”,并加格柵.x=linspace(0,2*pi,30);y=sin(x);plot(x,y)xlabel('自變量X')ylabel('函數(shù)Y')title('示意圖')gridon結(jié)果:命令gtext(‘string’)用鼠標放置標注在現(xiàn)有的圖上.運行命令gtext(‘string’)時,屏幕上出現(xiàn)當(dāng)前圖形,在圖形上出現(xiàn)一個交叉的十字該十字隨鼠標的移動移動,當(dāng)按下鼠標左鍵時,該標注string放在當(dāng)前十交叉的位置.例4.17在區(qū)間[0,2*pi]畫sin(x),并分別標注“sin(x)””cos(x)”.x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,x,z)gtext(‘sin(x)’);gtext(’cos(x)’)結(jié)果:2、定制坐標Axis([xminxmaxyminymaxzminzmax])定制圖形坐標Axisauto將坐標軸返回到自動缺省值例4.18在區(qū)間[0.005,0.01]顯示sin(1/x)的圖形。x=linspace(0.0001,0.01,1000);y=sin(1./x);plot(x,y)axis([0.0050.01–11])結(jié)果:3、圖形保持(1)holdon保持當(dāng)前圖形,以便繼續(xù)畫圖到當(dāng)前圖上holdoff釋放當(dāng)前圖形窗口例4.19將y=sin(x)、y=cos(x)分別用點和線畫出在同一屏幕上。x=linspace(0,2*pi,30);y=sin(x);z=cos(x)plot(x,z,:)holdonplot(x,y)結(jié)果:(2)figure(h)新建h窗口,激活圖形使其可見,并把它置于其它圖形之上例4.20區(qū)間[0,2*pi]新建兩個窗口分別畫出y=sin(x);z=cos(x)x=linspace(0,2*pi,100);y=sin(x);z=cos(x);plot(x,y);title('sin(x)');pausefigure(2);plot(x,z);title('cos(x)');結(jié)果:4、分割窗口h=subplot(mrows,ncols,thisplot)劃分整個作圖區(qū)域為mrows*ncols塊(逐行對塊訪問)并激活第thisplot塊,其后的作圖語句將圖形畫在該塊上。subplot(mrows,ncols,thisplot)激活已劃分為mrows*ncols塊的屏幕中的第thisplot塊,其后的作圖語句將圖形畫在該塊上。subplot(1,1,1)命令Subplot(1,1,1)返回非分割狀態(tài)。例4.21將屏幕分割為四塊,并分別畫出y=sin(x),z=cos(x),a=sin(x)*cos(x),b=sin(x)/cos(x)。清單:x=linspace(0,2*pi,100);y=sin(x);z=cos(x);a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps)subplot(2,2,1);plot(x,y),title(‘sin(x)’)subplot(2,2,2);plot(x,z),title(‘cos(x)’)subplot(2,2,3);plot(x,a),title(‘sin(x)cos(x)’)subplot(2,2,4);plot(x,b),title(‘sin(x)/cos(x)’)結(jié)果:zoomon為當(dāng)前圖形打開縮放模式單擊鼠標左鍵,則在當(dāng)前圖形窗口中,以鼠標點中的點為中心的圖形放大2倍;單擊鼠標右鍵,則縮小2倍zoomoff關(guān)閉縮放模式例4.22縮放y=sin(x)的圖形x=linspace(0,2*pi,30);y=sin(x);plot(x,y)zoomon結(jié)果:6.改變視角view命令view(a,b)改變視角到(a,b),a是方位角,b為仰角。缺省視角為(-37.5,30)。(2)view([x,y,z])view用空間矢量表示的,三個量只關(guān)心它們的比例,與數(shù)值的大小無關(guān),x軸view([1,0,0]),y軸view([0,1,0]),z軸view([0,0,1])。x=-3:0.1:3;y=1:0.1:5;[X,Y]=meshgrid(x,y);Z=(X+Y).^2;subplot(2,2,1);mesh(X,Y,Z)subplot(2,2,2);mesh(X,Y,Z);view(50,-34)subplot(2,2,3);mesh(X,Y,Z);view(-60,70)subplot(2,2,4);mesh(X,Y,Z);view(0,1,1)結(jié)果:7.動畫制作函數(shù)Moviein()產(chǎn)生一個幀矩陣來存放動畫中的幀;函數(shù)getframe對當(dāng)前的圖象進行快照;函數(shù)movie()按順序回放各幀。例4.24將曲面peaks做成動畫。清單:[x,y,z]=peaks(30);surf(x,y,z)axis([-33-33-1010])m=moviein(15);fori=1:15view(-37.5+24*(i-1),30)m(:,i)=getframe;endmovie(m)結(jié)果:說明:取所有圖象中的兩幀第二種方法是連續(xù)不段地擦除并重畫屏幕對象,在重畫時屏幕對象不斷變化,實現(xiàn)動畫效果,適于表現(xiàn)精度不高能夠快速重畫的場合。s=0.05;n=input('pleaseinputthenumbern=:')x=rand(n,1)-0.5;y=rand(n,1)-0.5;h=plot(x,y,'.');axis([-22-22])%axissquareset(h,'EraseMode','xor','MarkerSize',12)i=1;pausewhilei<ndrawnowx=x+s*(-1)^i*rand(n,1);y=y+s*(-1)^i*rand(n,1);set(h,'XData',x,'YData',y)i=i+1;end輸入:400結(jié)果:<在動畫始末時的兩副圖象>8.圖形用戶界面(GUI)GUI是將圖象的表現(xiàn)多元化,不需要一行行地用程序指令去設(shè)定,只需用鼠標選擇即可的交互式界面。實際應(yīng)用作用很大。在此,用一個例子簡要說明一下如何使用GUI:例4.25設(shè)計一個圖形用戶界面,對輸入的角度,可以使圖形上下左右旋轉(zhuǎn);第一步:建立圖形;清單:z=peaks(30);mesh(z)結(jié)果:保存:aa.fig第二步:建立對象。先在命令窗口輸入guide雙擊BlankGUI(Default),然后打開aa.fig,假設(shè)現(xiàn)在需要一個空白區(qū)域輸入旋轉(zhuǎn)角度,一個按紐對旋轉(zhuǎn)角度區(qū)域進行說明,四個按紐控制旋轉(zhuǎn)方向;可以在界面左側(cè)選擇一個Statictext(不執(zhí)行什么操作,只是設(shè)計者的想法)元件,一個Edittext(用戶輸入用于調(diào)用的函數(shù))元件,四個Pushbutton元件,用鼠標單擊即可,然后在圖中所希望的位置上拖拽出按鈕的大小.第三步:設(shè)定元件屬性。雙擊元件,就會出現(xiàn)元件的PropertyInspector;如下圖:其中比較重要的是:Callback(后面的參數(shù)項是所調(diào)用的程序名或函數(shù),也就是雙擊按鈕時執(zhí)行的程序或函數(shù));String(后面的參數(shù)項是按鈕表面的提示語);對于本例,4個操作按鈕的”String”提示語分別為UpRotate、LeftRotate、DownRotate、RightRotate;4個操作按鈕的”Callback”中輸入回調(diào)程序:rotviewup、rotviewleft、rotviewdown、rotviewright;同時應(yīng)編一個程序(程序名要與回調(diào)程序名一致),以便回調(diào)程序使用;對于本例:程序:rotview.mfunctionrotview(direction);rot_rag=findobj(gcbf,’Tag’,’EditText1’);stop_range=str2num(get(rot_rag,’string’));range=1:stop_range;switchdirectioncase‘right’viewhdle=findobj(gcbf,’Tag’,’Axes1’);viewnow=get(viewhdle,’View’);forI=1:length(range);set(viewhdle,’View’,viewnow+[range(i)0]);drawnowendcase‘left’viewhdle=findobj(gcbf,’Tag’,’Axes1’);viewnow=get(viewhdle,’View’);forI=1:length(range);set(viewhdle,’View’,viewnow-[range(i)0]);drawnowendcase‘up’viewhdle=findobj(gcbf,’Tag’,’Axes1’);viewnow=get(viewhdle,’View’);forI=1:length(range);set(viewhdle,’View’,viewnow+[0range(i)]);drawnowendcase‘down’viewhdle=findobj(gcbf,’Tag’,’Axes1’);viewnow=get(viewhdle,’View’);forI=1:length(range);set(viewhdle,’View’,viewnow-[0range(i)]);drawnowendend說明:在本段程序中,先由findobj去獲取”Edittext”中輸入的數(shù)值(即旋轉(zhuǎn)角度)接著使用switch指令確定要向哪個方向旋轉(zhuǎn)(點擊哪個按鈕,其就會調(diào)用它所所旋轉(zhuǎn)方向的程序),再由forend以及drawnow指令去完成屏幕顯示的工作;在命令窗口執(zhí)行aa.m,就會出現(xiàn)如下圖所示的界面,輸入旋轉(zhuǎn)角度,單擊任何一個按鈕,圖形就會按指定的方向旋轉(zhuǎn)特殊的二維圖形函數(shù)用角度theta(弧度表示)和極半徑rho作極坐標圖,用s指定線型。例4.26的極坐標圖象清單:theta=linspace(0,2*pi),rho=sin(2*theta).*cos(2*theta);polar(theta,rho,’g’)title(‘Polarplotofsin(2*theta).*cos(2*theta)’);結(jié)果:2、散點圖:scatter(X,Y,S,C)在向量X和Y的指定位置顯示彩色圈.X和Y必須大小相同.loadseamountscatter(x,y,5,z)結(jié)果:3、平面等值線圖:contour(x,y,z,n)繪制n個等值線的二維等值線圖例4.28在范圍-2<x<2,-2<y<3內(nèi)繪的等值線圖[X,Y]=meshgrid(-2:.2:2,-2:.2:3);Z=X.*exp(-X.^2-Y.^2);[C,h]=contour(X,Y,Z);clabel(C,h)colormapcool結(jié)果:特殊的三維圖形函數(shù)1、空間等值線圖:contour3(x,y,z,n)其中n表示等值線數(shù)。例4.29山峰的三維和二維等值線圖。清單:[x,y,z]=peaks;subplot(1,2,1)gridonxlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis')title('contour3ofpeaks');subplot(1,2,2)contour(x,y,z,16,'s')gridonxlabel('x-axis'),ylabel('y-axis')title('contourofpeaks');結(jié)果:3、三維散點圖scatter3(X,Y,Z,S,C);在向量X,Y和Z指定的位置上顯示彩色圓圈.向量X,Y和Z的大小必須相同.例4.30繪制三維散點圖。[x,y,z]=sphere(16);X=[x(:)*.5x(:)*.75x(:)];Y=[y(:)*.5y(:)*.75y(:)];Z=[z(:)*.5z(:)*.75z(:)];S=repmat([1.75.5]*10,prod(size(x)),1);C=repmat([123],prod(size(x)),1);scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'),view(-60,60)結(jié)果:應(yīng)用建模實例1繪制某一礦區(qū)地下儲藏煤礦堆積圖某一地區(qū)有一地下煤礦
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冰柜采購合同范本
- 促進健康教育活動的實施計劃
- 基于風(fēng)險評估的保安管理計劃
- 社區(qū)鄰里親情關(guān)懷計劃
- 《貴州豐聯(lián)礦業(yè)有限公司畢節(jié)市陰底鄉(xiāng)瑞興煤礦(變更)礦產(chǎn)資源綠色開發(fā)利用方案(三合一)》專家組評審意見
- 2025年云南貨運上崗資格證模擬考試
- 亞洲的人文環(huán)境課件-+2024-2025學(xué)年人教版七年級地理下冊
- 2025年莆田道路運輸貨運考試題庫
- 2025年鐵嶺貨運運輸駕駛員從業(yè)資格證考試試題
- 第12課+水陸交通的變遷高二歷史統(tǒng)編版(2019)選擇性必修2
- 核心素養(yǎng)視域下的小學(xué)英語“教學(xué)評一體化”實踐研究
- 2025年南昌理工學(xué)院單招職業(yè)技能測試題庫審定版
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- 2025年黃山職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫及參考答案
- 學(xué)校食堂食材采購合同范本
- 冷庫安全培訓(xùn)
- 2025年內(nèi)蒙古法院系統(tǒng)招聘用制書記員2988人過渡高頻重點模擬試卷提升(共500題附帶答案詳解)
- 自媒體運營實戰(zhàn)教程(抖音版) 課件 第7、8章 短視頻運營;直播運營
- 2025年陜西西安康本材料有限公司招聘筆試參考題庫含答案解析
- 音頻內(nèi)容創(chuàng)新策略-洞察分析
- 2024年陜西財經(jīng)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
評論
0/150
提交評論