Matlab入門教程.doc_第1頁
Matlab入門教程.doc_第2頁
Matlab入門教程.doc_第3頁
Matlab入門教程.doc_第4頁
Matlab入門教程.doc_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章 MATLAB操作基礎(chǔ)1.1 MATLAB概述1.1.2 MATLAB的主要功能1數(shù)值計算MATLAB以矩陣作為數(shù)據(jù)操作的基本單位,還提供了十分豐富的數(shù)值計算函數(shù)。2繪圖功能可以繪制二維、三維圖形,還可以繪制特殊圖形(與統(tǒng)計有關(guān)的圖,例如:區(qū)域圖、直方圖、餅圖、柱狀圖等)。3編程語言MATLAB具有程序結(jié)構(gòu)控制、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)、輸入輸出、面向?qū)ο蟮瘸绦蛘Z言特征,而且簡單易學(xué)、編程效率高。4MATLAB工具箱MATLAB包含兩部分內(nèi)容:基本部分和各種可選的工具箱。MATLAB工具箱分為兩大類:功能性工具箱和學(xué)科性工具箱。1.1.3MATLAB語言的特點v 語言簡潔緊湊,使用方便靈活,易學(xué)易用。例如:A=1 2 3;4 5 6;7 8 9一條語句實現(xiàn)了對3x3矩陣的輸入。v 語句功能強大,一條語句相當于其它語言的一個子程序,例如fft。v 語句簡單,內(nèi)涵豐富。同一個函數(shù)有不同的輸入變量和輸出變量,分別代表不同的含義。 v Matlab既具有結(jié)構(gòu)化的控制語句(if、for、while)又支持面向?qū)ο蟮某绦蛟O(shè)計。v 方便的繪圖功能。v 包含功能強勁的工具箱。v 易于擴展。1.1.4 初識MATLAB例1-1 繪制正弦曲線和余弦曲線。x=0:0.5:360*pi/180;plot(x,sin(x),x,cos(x);例1-2 求方程 3x4+7x3 +9x2-23=0的全部根。p=3,7,9,0,-23; %建立多項式系數(shù)向量x=roots(p) %求根例1-3 求積分quad(x.*log(1+x),0,1)例1-4 求解線性方程組。a=2,-3,1;8,3,2;45,1,-9; b=4;2;17; x=inv(a)*b1.2 MATLAB的運行環(huán)境與安裝1.2.1 MATLAB的運行環(huán)境硬件環(huán)境:(1) CPU (2) 內(nèi)存(3) 硬盤(4) CD-ROM驅(qū)動器和鼠標軟件環(huán)境:(1) Windows 98/NT/2000 或Windows XP(2) 其他軟件根據(jù)需要選用1.2.2 MATLAB的安裝 運行系統(tǒng)的安裝程序setup.exe,可以按照安裝提示依次操作。1.3 MATLAB集成環(huán)境1.3.1 啟動與退出MATLAB集成環(huán)境1MATLAB系統(tǒng)的啟動 與一般的Windows程序一樣,啟動MATLAB系統(tǒng)有3種常見方法:(1)使用Windows“開始”菜單。(2)運行MATLAB系統(tǒng)啟動程序matlab.exe。(3) 利用快捷方式。當MATLAB安裝完畢并首次啟動時,展現(xiàn)在屏幕上的界面為MATLAB的默認界面,如上圖所示。2MATLAB系統(tǒng)的退出要退出MATLAB系統(tǒng),也有3種常見方法:(1) 在MATLAB主窗口File菜單中選擇Exit MATLAB命令。(2) 在MATLAB命令窗口輸入Exit或Quit命令。(3) 單擊MATLAB主窗口的“關(guān)閉”按鈕1.3.2 主窗口MATLAB主窗口是MATLAB的主要工作界面。主窗口除了嵌入一些子窗口外,還主要包括菜單欄和工具欄。1菜單欄在MATLAB 6.5主窗口的菜單欄,共包含F(xiàn)ile、Edit、View、Web、Window和Help 6個菜單項。(1) File菜單項:File菜單項實現(xiàn)有關(guān)文件的操作。(2) Edit菜單項:Edit菜單項用于命令窗口的編輯操作。(3) View菜單項:View菜單項用于設(shè)置MATLAB集成環(huán)境的顯示方式。 (4) Web菜單項:Web菜單項用于設(shè)置MATLAB的Web操作。(5) Window菜單項:主窗口菜單欄上的Window菜單,只包含一個子菜單Close all,用于關(guān)閉所有打開的編輯器窗口,包括M-file、Figure、Model和GUI窗口。(6) Help菜單項:Help菜單項用于提供幫助信息。1.3.3 命令窗口命令窗口是MATLAB的主要交互窗口,用于輸入命令并顯示除圖形以外的所有執(zhí)行結(jié)果。MATLAB命令窗口中的“”為命令提示符,表示MATLAB正在處于準備狀態(tài)。在命令提示符后鍵入命令并按下回車鍵后,MATLAB就會解釋執(zhí)行所輸入的命令,并在命令后面給出計算結(jié)果。一般來說,一個命令行輸入一條命令,命令行以回車結(jié)束。但一個命令行也可以輸入若干條命令,各命令之間以逗號分隔,若前一命令后帶有分號,則逗號可以省略。例如xx=5,yy=3xx=5;yy=3多行命令()-續(xù)行符 如果命令語句超過一行或者太長希望分行輸入,則可以使用多行命令繼續(xù)輸入。 S=1-12+13+4+ 9-4-18; 3個小黑點稱為續(xù)行符,即把下面的物理行看作該行的續(xù)行。1.3.4 工作空間窗口 工作空間是MATLAB用于存儲各種變量和結(jié)果的內(nèi)存空間。在該窗口中顯示工作空間中所有變量的名稱、大小、字節(jié)數(shù)和變量類型說明,可對變量進行觀察、編輯、保存和刪除。1.3.5 當前目錄窗口和搜索路徑1當前目錄窗口當前目錄是指MATLAB運行文件時的工作目錄,只有在當前目錄或搜索路徑下的文件、函數(shù)可以被運行或調(diào)用。 在當前目錄窗口中可以顯示或改變當前目錄,還可以顯示當前目錄下的文件并提供搜索功能。將用戶目錄設(shè)置成當前目錄也可使用cd命令。例如,將用戶目錄c:mydir設(shè)置為當前目錄,可在命令窗口輸入命令: cd c:mydir2MATLAB的搜索路徑 在MATLAB命令窗口輸入一條命令后,MATLAB按照一定次序?qū)ふ蚁嚓P(guān)的文件?;镜乃阉鬟^程是:(1) 檢查該命令是不是一個變量。(2) 檢查該命令是不是一個內(nèi)部函數(shù)。(3) 檢查該命令是否當前目錄下的M文件。(4) 檢查該命令是否MATLAB搜索路徑中其他目錄下的M文件。1.3.6 命令歷史記錄窗口 在默認設(shè)置下,歷史記錄窗口中會自動保留自安裝起所有用過的命令的歷史記錄,并且還標明了使用時間,從而方便用戶查詢。而且,通過雙擊命令可進行歷史命令的再運行。如果要清除這些歷史記錄,可以選擇Edit菜單中的Clear Command History命令。1.3.7 啟動平臺窗口和Start按鈕 MATLAB 6.5的啟動平臺窗口可以幫助用戶方便地打開和調(diào)用MATLAB的各種程序、函數(shù)和幫助文件。 MATLAB 6.5主窗口左下角還有一個Start按鈕,單擊該按鈕會彈出一個菜單,選擇其中的命令可以執(zhí)行MATLAB產(chǎn)品的各種工具,并且可以查閱MATLAB包含的各種資源。1.4 MATLAB幫助系統(tǒng)1.4.1 幫助窗口進入幫助窗口可以通過以下3種方法:(1) 單擊MATLAB主窗口工具欄中的Help按鈕。(2) 在命令窗口中輸入helpwin、helpdesk或doc。(3) 選擇Help菜單中的“MATLAB Help”選項。1.4.2 幫助命令 MATLAB幫助命令包括help、lookfor以及模糊查詢。1help命令 (1)直接輸入help命令將會顯示當前幫助系統(tǒng)中所包含的所有項目; (2)help加函數(shù)名來顯示該函數(shù)的幫助說明。2lookfor命令help命令只搜索出那些關(guān)鍵字完全匹配的結(jié)果,lookfor命令對搜索范圍內(nèi)的M文件進行關(guān)鍵字搜索,條件比較寬松。lookfor命令只對M文件的第一行進行關(guān)鍵字搜索。若在lookfor命令加上-all選項,則可對M文件進行全文搜索。3模糊查詢 MATLAB 6.0以上的版本提供了一種類似模糊查詢的命令查詢方法,用戶只需要輸入命令的前幾個字母,然后按Tab鍵,系統(tǒng)就會列出所有以這幾個字母開頭的命令。1.4.3 演示系統(tǒng) 在幫助窗口中選擇演示系統(tǒng)(Demos)選項卡,然后在其中選擇相應(yīng)的演示模塊,或者在命令窗口輸入Demos,或者選擇主窗口Help菜單中的Demos子菜單,打開演示系統(tǒng)。第2章 Matlab及其應(yīng)用2.1、MATLAB的基本矩陣運算2.1.1 簡單矩陣輸入1、命令行簡單鍵盤輸入用于很少數(shù)據(jù)輸入矩陣的方向:, ; NaN Inf 2、文件形式輸入文本文件:從文本文件中讀入數(shù)據(jù) mat文件:matlab自有的數(shù)據(jù)格式 2.1.2 語句生成矩陣1、線性等間距格式矩陣 (1)X=起始值:增加值:結(jié)束值 (2)linspace命令a=linspace(1,10,5);(3)logspace命令b=logspace(0,2,10)2、矩陣連接c=a b;生成矩陣的函數(shù)zeros ones eye randn 2.1.3 矩陣運算1、矩陣的運算符 :加法 :減法 *:乘法;點乘:.* /:右除;右除:./ :左除;左除:. :乘方 2、矩陣的轉(zhuǎn)置等運算 共軛轉(zhuǎn)置; . 轉(zhuǎn)置 inv:矩陣求逆 det:求行列式值 eig:求特征值與特征向量 運算規(guī)則:從左到右;先乘除后加減;乘方運算符最高(1)兩矩陣加減,前提是維數(shù)相同,進行加減運算時,對應(yīng)的元素進行加減;(2)矩陣與標量加減,用矩陣中的每個元素都與標量進行加減運算;(3)兩矩陣相乘,前提是前一矩陣的列等于后一矩陣的行,與數(shù)學(xué)約定一樣;(4)矩陣與標量相乘,用矩陣中的每個元素都與標量進行相乘;(5)矩陣中的元素對元素的相乘: .* 矩陣中的元素對元素的相除: ./ . z=x.y x,y均為向量:z(i)=x(i) y(i) x為向量,y為標量:z(i)=x(i) y x為標量,y為向量:z(i)=xy(i) 2.1.4 矩陣的超越函數(shù)函數(shù)名 含義 abs 絕對值或者復(fù)數(shù)模 sqrt 平方根 real 實部 imag 虛部 conj 復(fù)數(shù)共軛 round 4舍5入到整數(shù) fix 舍入到最接近0的整數(shù) floor 舍入到最接近-的整數(shù) ceil 舍入到最接近的整數(shù)函數(shù)名 含義 sign 符號函數(shù) rem 留數(shù) sin 正弦 cos 余弦 tan 正切 asin 反正弦 acos 反余弦 atan 反正切 atan2 第四象限反正切 函數(shù)名 含義 sinh 雙曲正弦 cosh 雙曲余弦 tanh 雙曲正切 exp 自然指數(shù) log 自然對數(shù) log10 以10為底的對數(shù) 2.2 關(guān)系和邏輯運算1、 關(guān)系操作符(1)MATLAB常用的關(guān)系操作符有: (小于)、(大于)、=(大于或等于)、 = =(等于)、 =(不等于)。(2)MATLAB的關(guān)系操作符可以用來比較兩個大小相同的數(shù)組,或者比較一個數(shù)組和一個標量。在與標量比較時,結(jié)果和數(shù)組大小一樣。(3)如果滿足指定的關(guān)系,返回1,否則返回0。 a=1:9;b=a4b =0 0 0 0 1 1 1 1 1c=a(a4)c =5 6 7 8 9 2 、邏輯操作符(1)邏輯操作符定義了一種與或非的關(guān)系表達式。 MATLAB的邏輯操作符有 &(與)、|(或)、(非) (2)所有邏輯運算符連接的兩個操作數(shù)或者同維、同大小,或者其中一個為標量。(3)邏輯運算符都是對元素的操作,每個非零元素都當作“1”處理,邏輯運算的結(jié)果是由1和0構(gòu)成的矩陣。例如:c=(a4)c = 1 1 1 1 0 0 0 0 0c=(a4)&(aB=1 2 3;4 5 6; 7 8 9; B(2,: )= B=1 2 37 8 92、為了提取矩陣a的第n行、第m列的元素值,使用a(n,m)可以得到。同樣,將矩陣a的第n行、第m列的元素值賦為r,使用a(n,m)=r這樣的命令。 注意:在提取矩陣值時,行或列的值大于矩陣的大小,則出錯;在給矩陣賦值時,如果行或者列超出矩陣的大小,則MATLAB自動擴充矩陣的規(guī)模,使得可以賦值,擴充部分以零填充。3、利用矩陣下標,MATLAB還提供了子矩陣功能。同樣是上面的a(n,m),如果n和m是向量,而不是標量,則將獲得指定矩陣的子塊.4、同樣,矩陣的子塊還可以被賦值。如果在取子塊時,n或m是“:”,則返回指定的所有行或列。5、矩陣的序號編址:按列計數(shù)。 2.3.2矩陣大小1、在MATLAB命令行中,使用whos命令可以查看到所有變量的大小。2、為了獲得矩陣或者向量的大小,MATLAB還提供了兩個有用的函數(shù)size和length。3、size按照下面的形式使用:m,n=size(a,x)。一般的,(1)不用參量x時:當只有一個輸出變量時,size返回一個行向量,第一個數(shù)為行數(shù),第二個數(shù)為列數(shù);如果有兩個輸出變量,第一個返回量為行數(shù),第二個返回數(shù)為列數(shù)。(2)當使用x時:x=1返回行數(shù),x=2返回列數(shù),這時只有一個返回值。4、length返回行數(shù)或者列數(shù)的最大值,即length(a)=max(size(a)。2.3.3 矩陣操作函數(shù)MATLAB提供了一組執(zhí)行矩陣操作的函數(shù),例如:flipud(a)使得矩陣上下翻轉(zhuǎn), fliplr(a)使得矩陣左右翻轉(zhuǎn)2.3.4 矩陣查找和排序1、子矩陣的查找使用find命令完成,它返回關(guān)系表達式為真的下標。例如:a=10:20;find(a15)ans = 7 8 9 10 112、矩陣的排序使用sort函數(shù),它將矩陣按照升序排列。2.4 時間和日期 1、日歷函數(shù):calendar2、時間函數(shù):clock3、查看CPU 時間:cputime 4、日期函數(shù):date5、秒表定時: tic toc2.5退出和保存工作空間: 1 、 save:工作空間中的所有變量保存在磁盤上名為matlab.mat的文件中。2 、 save 文件名 變量名將指定的變量保存在指定的文件中。如:save temp x y z把x y z這3個變量保存在文件temp.mat中。3、下次加載MATLAB時,可以利用load命令將保存在文件中的變量恢復(fù)到工作空間中,其格式為:(1)load將保存在matlab.mat中的變量裝入到matlab空間中。(2)load 文件名 變量名從指定文件中將指定的變量裝入到matlab的工作空間中。如:load temp x從文件temp.mat 中只將變量x裝入到 matlab的工作空間中。2.6 Matlab的變量1、基本運算 變量 逗號、分號的意義 行內(nèi)編輯、注釋、運算規(guī)則2、變量要求變量區(qū)分字母的大小寫名字不能超過31個字符變量必須以字母開頭,之后可以是任意字母、數(shù)字或者下劃線變量中不能含有標點符號2.6.1 特殊變量2.6.2 復(fù)數(shù)不需要特殊的處理,可以直接進行。復(fù)數(shù)可以表示為:a=10-9i 2.6.3 MATLAB數(shù)據(jù)類型:雙精度型、字符型、稀疏型、單元型、結(jié)構(gòu)型、8位型最常使用的是雙精度型和字符型;稀疏型用于稀疏矩陣;單元型和結(jié)構(gòu)型用于編寫大型軟件;8位型(6.0以上版本:16位型、32位型)用于圖象處理。1、雙精度型(double): 在缺省情況下,當結(jié)果為整數(shù),作為整數(shù)顯示;當結(jié)果為實數(shù),以小數(shù)后4位的精度近似顯示。 如果結(jié)果中的有效數(shù)字超出了這一范圍,以科學(xué)計數(shù)法顯示結(jié)果。 2、字符型(char): a=sss;bbb a =sss bbb (1)字符數(shù)組的定義:字符數(shù)組就是字符串,字符串中的每一個字符在系統(tǒng)內(nèi)部都相應(yīng)地表示一個數(shù)值。 a=You are welcome! a =You are welcome! size(a) ans = 1 16 相關(guān)函數(shù)A、函數(shù)disp用來顯示字符串:disp(Hello) Hello B、判斷一個變量是否為字符型數(shù)組,可以用函數(shù)class或ischar。 x=class(a)y=ischar(a) x =chary = 1 (2)字符與數(shù)值的相互轉(zhuǎn)換: double:將一個字符串轉(zhuǎn)換為一個數(shù)值 char:將數(shù)值轉(zhuǎn)換為字符串 s=Good morning!s1=double(s)s2=char(s1) s =Good morning!s1 = 71 111 111 100 32 109 111 114 110 105 110 103 33s2 =Good morning! (3)字符串的比較A、strcmp:判別兩個字符串是否相等B、strncmp:判別兩個字符串的前n個字符是否相等s1=glisten;s2=glitter; a1=strcmp(s1,s2) a2=strncmp(s1,s2,3) a1 = 0a2 = 1 (4)二維字符數(shù)組: 創(chuàng)建二維字符數(shù)組時,每行的長度要相等。如果字符串長度不等,可以用空格充填較短的字符串。例如:s=abc ;defg s =abc defg 用char函數(shù)創(chuàng)建二維字符數(shù)組比較方便。當字符串長度不等時,char函數(shù)可以自動地在較短的字符中加上一定數(shù)量的尾部空格,使其與最長字符串的長度相等。例如: y=char(abc,defg,abcde) z1=length(y) z2=size(y) y =abc defg abcde z1 = 5z2 = 3 5 3、稀疏型(sparse):含有大量0的矩陣,稱為矩陣。只存儲矩陣中的非0元素speye(4) 生成單位稀疏矩陣ans = (1,1) 1 (2,2) 1 (3,3) 1 (4,4) 14、單元型(cell):把不同類型的數(shù)據(jù)存儲在一起的數(shù)組稱為單元數(shù)組。單元數(shù)組中的每個元素是其他任意一種數(shù)據(jù)類型,通??梢詫⑾嚓P(guān)的尺寸大小不同的數(shù)據(jù)組合在一起。 a=1,good,1 2 3 a = 1 good 1x3 double(1)創(chuàng)建單元數(shù)組:cellc=cell(n):生成一個n*n維的空數(shù)組c=cell(m,n):生成一個m*n維的空數(shù)組c=cell(size(A):生成一個和所包含的數(shù)組A階數(shù)完全相同的空數(shù)組EX1:A=eye(2) c=cell(size(A) A = 1 0 0 1c = EX2:給單元數(shù)組賦值D=cell(1,3) D1,1=Good; D1,2=1 2;4 5;D1,3=1+4i; D D = D = Good 2x2 double 1.0000+ 4.0000i EX3:利用直接輸入的方法創(chuàng)建單元數(shù)組,單元數(shù)組的下標用圓括號括起來,右邊是單元數(shù)組的內(nèi)容,用花括號括起來。Aa(1,1)=GOOD;Aa(1,2)=200;Aa(2,1)=5-6i;Aa(3,2)=1 2;4 5 Aa = GOOD 200 5.0000- 6.0000i 2x2 double (2)單元數(shù)組的顯示A、直接顯示Aa Aa = GOOD 200 5.0000- 6.0000i 2x2doubleB、利用函數(shù)顯示celldisp(Aa) celldisp(Aa,Bb)C、利用圖形顯示單元數(shù)組 cellplot(Aa) cellplot(Aa,legend) (4)單元數(shù)組的變形 E=reshape(X,1,6) cellplot(E) E = Welcome 4x4 double 3x3 double (5)字符型單元數(shù)組:由于字符矩陣要求矩陣的每一行的長度相等,需要在字符串的尾端加入空格,在讀取的時候,又常常將末尾的空格去掉,很不方便。由于單元數(shù)組允許不同的單元內(nèi)有不同類型和長度的數(shù)據(jù),問題就可以避免。cellstr:將標準的字符型數(shù)組轉(zhuǎn)換為字符型單元數(shù)組。EX1:ne=aaa;bb ; cellstr(ne) ans = aaa bb5、結(jié)構(gòu)型(struct):把不同類型的數(shù)組存儲在一起的數(shù)組稱為結(jié)構(gòu)數(shù)組。結(jié)構(gòu)數(shù)組相當于數(shù)據(jù)庫的記錄。結(jié)構(gòu)數(shù)組中不同類型的數(shù)組是通過不同的域名來區(qū)分的。在MATLAB的結(jié)構(gòu)數(shù)組中,每個元素都是由不同的數(shù)據(jù)類型所組成的,不同的數(shù)據(jù)類型分別放在不同的數(shù)據(jù)區(qū)域里,稱為結(jié)構(gòu)數(shù)組的域。(1)建立結(jié)構(gòu)數(shù)組A、利用函數(shù)struct建立結(jié)構(gòu)數(shù)組調(diào)用格式:s=struct(field 1,values 1,field 2,values 2,)例sxx=struct(name,zhao,Li,wang,age,20,21,29,address,changda) %注意: 所有的address都賦相同的值 sxx(1) sxx(2) B、利用賦值語句直接生成結(jié)構(gòu)數(shù)組=zhou; sss.age=10; sss.address=changda; sss =zhao sss = name: zhao age: 10 address: changda sss(3).address=chang an sss = 1x3 struct array with fields: name age address 相關(guān)函數(shù) A、getfield:獲取結(jié)構(gòu)數(shù)組中某個域的內(nèi)容B、setfield:設(shè)置結(jié)構(gòu)數(shù)組中某個域的內(nèi)容C、rmfield:刪除結(jié)構(gòu)數(shù)組的域D、isfield:判斷某個變量域是否是一個結(jié)構(gòu)數(shù)組的域E、isstruct:判斷某個變量域是否是一個結(jié)構(gòu)數(shù)組第3章 Matlab編程基礎(chǔ)3.1 Matlab 程序設(shè)計1、設(shè)置完整的路徑;(1)對于用戶程序中使用的文件名和變量名,系統(tǒng)按照以下順序搜索: A、查找對象是否是工作空間的變量; B、查找對象是否是系統(tǒng)的內(nèi)部函數(shù); C、查找對象是否是在系統(tǒng)的當前目錄下。(2)路徑設(shè)置的方法: A、在命令窗口下使用cd命令; B、在菜單欄下的Current directory下。2、參數(shù)值要集中放在程序的開始部分,便于維護;3、每行程序后輸入分號,則執(zhí)行程序行不會顯示在屏幕上;如果不輸入分號,則執(zhí)行程序行會顯示在屏幕上;4、符號“%”后的內(nèi)容是注釋行;5、如果語句在一行中放不下,則可以在行末鍵入三個點(),指示下一行為續(xù)行;6、遇到不明白的命令,多使用在線幫助命令或系統(tǒng)演示示例;7、盡量使程序模塊化,采用主程序調(diào)用子程序的方法,將所有子程序合并在一起來執(zhí)行全部的操作。 MABLAB程序的基本組成部分: %說明部分清除命令(可選)定義變量(局部變量和全局變量)按照順序行執(zhí)行的命令語句控制語句開始 控制語句體 控制語句結(jié)束 其他命令(如繪圖等)3.1.2 Matlab的工作方式有二種1. 交互式的指令操作方式。即用戶在命令窗口中輸入命令并按下回車鍵后,系統(tǒng)執(zhí)行該指令并立即給出運算結(jié)果。 2. m文件的編程方式。m文件是由 matlab語句構(gòu)成的文件,且文件名必須以.m為擴展名,如ex.m。用戶可以用任何文件編輯器來對M文件進行編輯。 MATLAB語言編寫的磁盤文件稱為M文件,擴展名為m,格式為*.m,M文件可以互相調(diào)用,也可以調(diào)用它自己。(1)M文件在功能上分為:A、底稿文件對于簡單的問題,在命令窗口的MATLAB提示符下,輸入MATLAB的語句,這樣可以快速有效地得到結(jié)果。當問題比較復(fù)雜時,需要執(zhí)行一系列語句,在MATLAB提示符下鍵入語句就變的很麻煩。對這個問題,MATLAB提供了一種邏輯解決方案,允許用戶把MATLAB命令放在一個簡單的文本文件中,這些文件稱為底稿文件。 B.函數(shù)文件a. 格式: function f1,f2,=fun(x,y,z,)其中x,y,z,是形式輸入?yún)?shù),f1,f2,為返回的形式輸出參數(shù)值,fun為形式函數(shù)名,函數(shù)名一般就是這個函數(shù)文件的文件名。b.文件前面幾行由%開始的語句構(gòu)成了M文件的幫助信息,當鍵入:help 文件名 可得到文件的說明信息。(help為在線幫助)(2)函數(shù)文件和底稿文件的區(qū)別: a、形式上,函數(shù)文件第一行必須包含關(guān)鍵字function,且有函數(shù)名和輸入輸出形式參數(shù),而底稿文件沒有; b、函數(shù)文件可以傳遞參數(shù),底稿文件不具備參數(shù)傳遞功能; c、函數(shù)文件中定義及使用的變量都是局部變量,只在本函數(shù)內(nèi)有效,底稿文件中定義及使用的變量都是全局變量,在退出文件后仍有效。 3.1.3 程序流程控制1.順序結(jié)構(gòu):Matlab 從上到下依次執(zhí)行各語句,該結(jié)構(gòu)最簡單。2.循環(huán)結(jié)構(gòu) (1)for-end 循環(huán) 用于循環(huán)次數(shù)事先確定的,格式為 for i=n:s:m (初值:步長:終值) 語句體 end s 為步長,可以為正數(shù),負數(shù)或小數(shù)。 說明:變量x通常稱為循環(huán)變量。循環(huán)變量可以是一個數(shù)組。如果循環(huán)變量是數(shù)組,在for和end語句之間的commands按數(shù)組中的每一列執(zhí)行一次。在每一次迭代中,x被指定為數(shù)組的下一列,即在第n次循環(huán)中,x=array(:, n)。例如,x=0 2 3;4 7 9for a=x /把矩陣x的每一列元素依次賦給變量Ab=a+4end 運行結(jié)果:x = 0 2 3 4 7 9b = 4 8b = 6 11b = 7 13與For循環(huán)相關(guān)的其它規(guī)定:(1)For循環(huán)不能用For循環(huán)內(nèi)重新賦值循環(huán)變量n來終止。(2)For循環(huán)可以嵌套。(3)當有一個等效的數(shù)組方法來解給定的問題時,應(yīng)避免用For循環(huán)。例如, n=1:10; x=sin(n*pi/10) (4)為了得到最大的速度,在For循環(huán)(While循環(huán))被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組。例如,在For循環(huán)內(nèi)每執(zhí)行一次命令,變量x的大小增加1。迫使MATLAB每通過一次循環(huán)要花費時間對x分配更多的內(nèi)存。為了消去這個步驟,F(xiàn)or循環(huán)的例子應(yīng)重寫為x=zeros(1,10); % preallocated memory for x for n=1:10 x(n)=sin(n*pi/10); end(2)while-end 循環(huán) 用于循環(huán)次數(shù)不能事先確定的,格式為 while 表達式 語句體 end 只有表達式為真,就執(zhí)行語句體,表達式為假,終止該循環(huán)。 說明:表達式可以是一個矩陣,且矩陣中的所有元素都為非0時,才執(zhí)行循環(huán)體中的內(nèi)容。如果表達式為一空矩陣,則循環(huán)體中的內(nèi)容永遠不會被執(zhí)行。 注意:要想在任何時候終止循環(huán)(for或while循環(huán)),可利用break語句。 num=1;a=0; while num5 % give 20% discount for larger purchases cost=(1-20/100)*cost; end costcost = 200 4.Switch分支結(jié)構(gòu)語句格式為 switch 表達式0 case 表達式1的值 命令1 case 表達式2的值 命令2. otherwise 命令行nend switch語句可以根據(jù)一個變量或表達式的值執(zhí)行特定的語句。先計算switch后邊表達式0的值,然后檢查case子句后面的值是否與表達式0的值相等,如表達式1的值與之相等,則執(zhí)行命令行1,否則繼續(xù)檢查第二個case子句,如果所有case子句的值都不等于表達式0的值,則執(zhí)行otherwise后面的命令行n。 在switch中,如果一個case條件滿足,執(zhí)行完這個case后,直接跳到end語句后面的語句,不在判斷其他case語句。5、return語句用來終止當前正在執(zhí)行的函數(shù)中的命令,返回調(diào)用它的函數(shù)。 第4章 MATLAB多項式計算 4.1 多項式4.1.1 多項式的表示Matlab中用按降冪排列的多項式系數(shù)組成的行向量表示多項式,如:p(x)=x3-2x-5 被表示為:p = 1 0 2 5; 1多項式的加減運算2多項式乘法運算函數(shù)conv(P1,P2)用于求多項式P1和P2的乘積。這里,P1、P2是兩個多項式系數(shù)向量。例4-1 求多項式x4+8x3-10與多項式2x2-x+3的乘積3多項式除法 函數(shù)Q,r=deconv(P1,P2)用于對多項式P1和P2作除法運算。其中Q返回多項式P1除以P2的商式,r返回P1除以P2的余式。這里,Q和r仍是多項式系數(shù)向量。deconv是conv的逆函數(shù),即有P1=conv(P2,Q)+r。例4-2 求多項式x4+8x3-10除以多項式2x2-x+3的結(jié)果。4.1.2 多項式的導(dǎo)數(shù)對多項式求導(dǎo)數(shù)的函數(shù)是:p=polyder(A):求多項式A的導(dǎo)函數(shù)p=polyder(A,B):求A與B積的導(dǎo)函數(shù)p,q=polyder(A,B):求A/B的導(dǎo)函數(shù),導(dǎo)函數(shù)的分子存入p,分母存入q。上述函數(shù)中,參數(shù)A,B是多項式的向量表示,結(jié)果p,q也是多項式的向量表示。例4-3 求有理分式的導(dǎo)數(shù)。命令如下:P=1;Q=1,0,5;p,q=polyder(P,Q)4.1.3 多項式的求值 兩種求多項式值的函數(shù): polyval(P,x) polyvalm(P,x) 兩者的區(qū)別在于前者是代數(shù)多項式求值,而后者是矩陣多項式求值。1代數(shù)多項式求值polyval函數(shù)用來求代數(shù)多項式的值,其調(diào)用格式為:Y=polyval(P,x)若x為一數(shù)值,則求多項式在該點的值;若x為向量或矩陣,則對向量或矩陣中的每個元素求其多項式的值。例4-4 已知多項式x4+8x3-10,分別取x=1.2和一個23矩陣為自變量計算該多項式的值。2矩陣多項式求值 polyvalm函數(shù)要求x為方陣,它以方陣為自變量求多項式的值。設(shè)A為方陣,P代表多項式x3-5x2+8,那么 polyvalm(P,A)的含義是: A*A*A-5*A*A+8*eye(size(A) 而polyval(P,A)的含義是: A.*A.*A-5*A.*A+8*ones(size(A)例4-5 仍以多項式x4+8x3-10為例,取一個22矩陣為自變量分別用polyval和polyvalm計算該多項式的值。4.1.4 多項式求根 n次多項式具有n個根,當然這些根可能是實根,也可能含有若干對共軛復(fù)根。MATLAB提供的roots函數(shù)用于求多項式的全部根,其調(diào)用格式為: x=roots(P) 其中P為多項式的系數(shù)向量,求得的根賦給向量x,即x(1),x(2),x(n)分別代表多項式的n個根。 注意:根被儲存為列向量 例4-6 求多項式x4+8x3-10的根。命令如下:A=1,8,0,0,-10;x=roots(A)若已知多項式的全部根,則可以用poly函數(shù)建立起該多項式,其調(diào)用格式為:P=poly(x)若x為具有n個元素的向量,則poly(x)建立以x為其根的多項式,且將該多項式的系數(shù)賦給向量P。例4-7 已知 f(x)(1) 計算f(x)=0 的全部根。(2) 由方程f(x)=0的根構(gòu)造一個多項式g(x),并與f(x)進行對比。命令如下:P=3,0,4,-5,-7.2,5;X=roots(P) %求方程f(x)=0的根G=poly(X) %求多項式g(x)4.1.5 多項式擬合p=polyfit(x,y,n):用最小二乘法對已知數(shù)據(jù)x,y進行擬合,以求得n階多項式的系數(shù)向量; p,s=polyfit(x,y,n):p為返回的擬合后的多項式的系數(shù)向量,s為使用函數(shù)polyval獲得的錯誤預(yù)估計值。 例4-8x=linspace(0,2*pi,100);y=sin(x);t=polyfit(x,y,6);y1=polyval(t,x);plot(x,y,ro,x,y1,b-) 4.2 數(shù)據(jù)插值4.2.1 一維數(shù)據(jù)插值 在MATLAB中,實現(xiàn)這些插值的函數(shù)是interp1,其調(diào)用格式為:Y1=interp1(X,Y,X1,method) 函數(shù)根據(jù)X,Y的值,計算函數(shù)在X1處的值。X,Y是兩個等長的已知向量,分別描述采樣點和樣本值,X1是一個向量或標量,描述欲插值的點,Y1是一個與X1等長的插值結(jié)果。 method是插值方法,允許的取值有 A 、nearest 尋找最近數(shù)據(jù)點,由其得出函數(shù)值; B、linear 線性插值(該函數(shù)的默認方法); C、spline 樣條插值,數(shù)據(jù)點處光滑-左導(dǎo)等于右導(dǎo); D、cubic 三次插值例4-9 某觀測站測得某日4:00時至18:00時之間每隔2小時的室內(nèi)外溫度(),用3次樣條插值分別求得該日室內(nèi)外4:30至17:30時之間每隔2小時各點的近似溫度()。 設(shè)時間變量h為一行向量,溫度變量t為一個兩列矩陣,其中第一列存放室內(nèi)溫度,第二列儲存室外溫度。命令如下:h =4:2:18;t=18,20,22,25,30,28,24,28; 17,18,19,24,27,23,23,25;XI =4.5:2:17.5YI=interp1(h,t,XI,spline) %用3次樣條插值計算4.2.2 二維數(shù)據(jù)插值 在MATLAB中,提供了解決二維插值問題的函數(shù)interp2,其調(diào)用格式為:Z1=interp2(X,Y,Z,X1,Y1,method) 其中X,Y是兩個向量,分別描述兩個參數(shù)的采樣點,Z是與參數(shù)采樣點對應(yīng)的函數(shù)值,X1,Y1是兩個向量或標量,描述欲插值的點。Z1是根據(jù)相應(yīng)的插值方法得到的插值結(jié)果。 A、nearest 尋找最近數(shù)據(jù)點,由其得出函數(shù)值; B、linear 二維線性插值 C、cubic 二維三次插值例4-10 某實驗對一根長10米的鋼軌進行熱源的溫度傳播測試。用x表示測量點0:2.5:10(米),用h表示測量時間0:30:60(秒),用T表示測試所得各點的溫度()。試用線性插值求出在一分鐘內(nèi)每隔20秒、鋼軌每隔1米處的溫度TI。命令如下:x=0:2.5:10;h=0:30:60;T=95,14,0,0,0;88,48,32,12,4;47,44,54,48,41;xi=0:10;hi=0:20:40;TI=interp2(x,h,T,xi,hi)第5章 MATLAB統(tǒng)計函數(shù) 5.1 數(shù)據(jù)統(tǒng)計處理5.1.1 最大值和最小值MATLAB提供的求數(shù)據(jù)序列的最大值和最小值的函數(shù)分別為max和min,兩個函數(shù)的調(diào)用格式和操作過程類似。1求向量的最大值和最小值求一個向量X的最大值的函數(shù)有兩種調(diào)用格式,分別是:(1) y=max(X):返回向量X的最大值存入y,如果X中包含復(fù)數(shù)元素,則按模取最大值。(2) y,I=max(X):返回向量X的最大值存入y,最大值的序號存入I,如果X中包含復(fù)數(shù)元素,則按模取最大值。求向量X的最小值的函數(shù)是min(X),用法和max(X)完全相同。例5-1 求向量x的最大值。命令如下:x=-53,72,9,15,23,57;y=max(x) %求向量x中的最大值y,l=max(x) %求向量x中的最大值及其該元素的位置2求矩陣的最大值和最小值求矩陣A的最大值的函數(shù)有3種調(diào)用格式,分別是:(1) max(A):返回一個行向量,向量的第i個元素是矩陣A的第i列上的最大值。(2) Y,U=max(A):返回行向量Y和U,Y向量記錄A的每列的最大值,U向量記錄每列最大值的行號。(3) max(A,dim):dim取1或2。dim取1時,該函數(shù)和max(A)完全相同;dim取2時,該函數(shù)返回一個列向量,其第i個元素是A矩陣的第i行上的最大值。求最小值的函數(shù)是min,其用法和max完全相同。例5-2 分別求35矩陣x中各列和各行元素中的最大值,并求整個矩陣的最大值和最小值。3兩個向量或矩陣對應(yīng)元素的比較函數(shù)max和min還能對兩個同型的向量或矩陣進行比較,調(diào)用格式為:(1) U=max(A,B):A,B是兩個同型的向量或矩陣,結(jié)果U是與A,B同型的向量或矩陣,U的每個元素等于A,B對應(yīng)元素的較大者。(2) U=max(A,n):n是一個標量,結(jié)果U是與A同型的向量或矩陣,U的每個元素等于A對應(yīng)元素和n中的較大者。min函數(shù)的用法和max完全相同。例5-3 求兩個23矩陣x, y所有同一位置上的較大元素構(gòu)成的新矩陣p。5.1.2 求和與求積數(shù)據(jù)序列求和與求積的函數(shù)是sum和prod,其使用方法類似。設(shè)X是一個向

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論