Matlab入門教程_第1頁(yè)
Matlab入門教程_第2頁(yè)
Matlab入門教程_第3頁(yè)
Matlab入門教程_第4頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 1章 MATLAB操作基礎(chǔ)1.1MATLAB概述MATLAB的主要功能1數(shù)值計(jì)算MATLAB以矩陣作為數(shù)據(jù)操作的基本單位,還提供了十分豐富的數(shù)值計(jì)算函數(shù)。2繪圖功能可以繪制二維、三維圖形,還可以繪制特殊圖形(與統(tǒng)計(jì)有關(guān)的圖,例如:區(qū)域圖、直方圖、餅圖、柱狀圖等) 。3編程語(yǔ)言MATLAB具有程序結(jié)構(gòu)控制、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)、輸入輸出、面向?qū)ο蟮瘸绦蛘Z(yǔ)言特征,而且簡(jiǎn)單易學(xué)、編程效率高。4MATLAB工具箱MATLAB包含兩部分內(nèi)容:基本部分和各種可選的工具箱。MATLAB工具箱分為兩大類:功能性工具箱和學(xué)科性工具箱。語(yǔ)言的特點(diǎn)? 語(yǔ)言簡(jiǎn)潔緊湊,使用方便靈活,易學(xué)易用。例如: A=1 2 3;

2、4 5 6;7 8 9一條語(yǔ)句實(shí)現(xiàn)了對(duì)3x3 矩陣的輸入。?語(yǔ)句功能強(qiáng)大,一條語(yǔ)句相當(dāng)于其它語(yǔ)言的一個(gè)子程序,例如fft 。? 語(yǔ)句簡(jiǎn)單,內(nèi)涵豐富。同一個(gè)函數(shù)有不同的輸入變量和輸出變量,分別代表不同的含義。? Matlab 既具有結(jié)構(gòu)化的控制語(yǔ)句( if、 for 、 while )又支持面向?qū)ο蟮某绦蛟O(shè)計(jì)。? 方便的繪圖功能。? 包含功能強(qiáng)勁的工具箱。? 易于擴(kuò)展。1.1.4初識(shí) MATLABx=roots(p)%求根例 1-1繪制正弦曲線和余弦曲線。例 1-3 求積分x=0:0.5:360*pi/ 180;quad('x.*log(1+x)',0,1)plot(x,sin(

3、x),x,cos(x);例 1-4 求解線性方程組。例 1-2求方程 3x4+7x3+9x2-23=0 的a=2,-3,1;8,3,2;45,1,-9;全部根。b=4;2;17;p=3,7,9,0,-23;%建立多項(xiàng)式x=inv(a)*b系數(shù)向量1.2 MATLAB的運(yùn)行環(huán)境與安裝1.2.1MATLAB的運(yùn)行環(huán)境(4) CD-ROM驅(qū)動(dòng)器和鼠標(biāo)硬件環(huán)境:軟件環(huán)境:(1) CPU(1) Windows 98/NT/2000 或 Windows(2) 內(nèi)存XP(3) 硬盤(2) 其他軟件根據(jù)需要選用1.2.2MATLAB的安裝運(yùn)行系統(tǒng)的安裝程序setup.exe,可以按照安裝提示依次操作。1.3M

4、ATLAB集成環(huán)境啟動(dòng)與退出 MATLAB集成環(huán)境1MATLAB系統(tǒng)的啟動(dòng)與一般的 Windows 程序一樣,啟動(dòng)MATLAB系統(tǒng)有 3 種常見(jiàn)方法:(1)使用 Windows“開(kāi)始”菜單。(2)運(yùn)行 MATLAB系統(tǒng)啟動(dòng)程序 matlab.exe。(3) 利用快捷方式。當(dāng) MATLAB 安裝完畢并首次啟動(dòng)時(shí),展現(xiàn)在屏幕上的界面為 MATLAB 的默認(rèn)界面,如上圖所示。2MATLAB系統(tǒng)的退出要退出 MATLAB系統(tǒng),也有 3 種常見(jiàn)方法:(1) 在 MATLAB主窗口 File 菜單中選擇 Exit MATLAB命令。(2) 在 MATLAB命令窗口輸入 Exit 或 Quit 命令。(3)

5、 單擊 MATLAB主窗口的“關(guān)閉”按鈕主窗口MATLAB主窗口是 MATLAB的主要工作界面。 主窗口除了嵌入一些子窗口外, 還主要包括菜單欄和工具欄。1菜單欄在 MATLAB 6.5 主窗口的菜單欄,共包含F(xiàn)ile 、Edit、View 、Web、Window 和Help 6 個(gè)菜單項(xiàng)。(1) File 菜單項(xiàng): File 菜單項(xiàng)實(shí)現(xiàn)有關(guān)文件的操作。(2) Edit 菜單項(xiàng): Edit 菜單項(xiàng)用于命令窗口的編輯操作。(3) View 菜單項(xiàng): View 菜單項(xiàng)用于設(shè)置 MATLAB集成環(huán)境的顯示方式。(4) Web 菜單項(xiàng): Web 菜單項(xiàng)用于設(shè)置 MATLAB的 Web 操作。(5) W

6、indow 菜單項(xiàng):主窗口菜單欄上的 Window 菜單,只包含一個(gè)子菜單 Closeall,用于關(guān)閉所有打開(kāi)的編輯器窗口,包括M-file 、Figure、Model 和 GUI 窗口。(6) Help 菜單項(xiàng): Help 菜單項(xiàng)用于提供幫助信息。命令窗口命令窗口是 MATLAB 的主要交互窗口,用于輸入命令并顯示除圖形以外的所有執(zhí)行結(jié)果。MATLAB 命令窗口中的“ >>”為命令提示符,表示 MATLAB 正在處于準(zhǔn)備狀態(tài)。在命令提示符后鍵入命令并按下回車鍵后, MATLAB 就會(huì)解釋執(zhí)行所輸入的命令,并在命令后面給出計(jì)算結(jié)果。一般來(lái)說(shuō),一個(gè)命令行輸入一條命令,命令行以回車結(jié)束

7、。但一個(gè)命令行也可以輸入若干條命令,各命令之間以逗號(hào)分隔,若前一命令后帶有分號(hào),則逗號(hào)可以省略。例如xx=5,yy=3xx=5;yy=3多行命令( )-續(xù)行符如果命令語(yǔ)句超過(guò)一行或者太長(zhǎng)希望分行輸入,則可以使用多行命令繼續(xù)輸入。S=1-12+13+4+9-4-18;3 個(gè)小黑點(diǎn)稱為續(xù)行符,即把下面的物理行看作該行的續(xù)行。 工作空間窗口工作空間是 MATLAB用于存儲(chǔ)各種變量和結(jié)果的內(nèi)存空間。在該窗口中顯示工作空間中所有變量的名稱、大小、字節(jié)數(shù)和變量類型說(shuō)明,可對(duì)變量進(jìn)行觀察、編輯、保存和刪除。當(dāng)前目錄窗口和搜索路徑1當(dāng)前目錄窗口當(dāng)前目錄是指 MATLAB 運(yùn)行文件時(shí)的工作目錄,只有在當(dāng)前目錄或

8、搜索路徑下的文件、函數(shù)可以被運(yùn)行或調(diào)用。在當(dāng)前目錄窗口中可以顯示或改變當(dāng)前目錄,還可以顯示當(dāng)前目錄下的文件并提供搜索功能。將用戶目錄設(shè)置成當(dāng)前目錄也可使用cd 命令。例如,將用戶目錄 c:mydir 設(shè)置為當(dāng)前目錄,可在命令窗口輸入命令:cd c:mydir2MATLAB的搜索路徑在 MATLAB 命令窗口輸入一條命令后, MATLAB 按照一定次序?qū)ふ蚁嚓P(guān)的文件?;镜乃阉鬟^(guò)程是:(1) 檢查該命令是不是一個(gè)變量。(2) 檢查該命令是不是一個(gè)內(nèi)部函數(shù)。(3) 檢查該命令是否當(dāng)前目錄下的 M 文件。(4) 檢查該命令是否 MATLAB搜索路徑中其他目錄下的 M 文件。命令歷史記錄窗口在默認(rèn)設(shè)置

9、下,歷史記錄窗口中會(huì)自動(dòng)保留自安裝起所有用過(guò)的命令的歷史記錄,并且還標(biāo)明了使用時(shí)間,從而方便用戶查詢。而且,通過(guò)雙擊命令可進(jìn)行歷史命令的再運(yùn)行。如果要清除這些歷史記錄,可以選擇Edit 菜單中的 Clear Command History 命令。啟動(dòng)平臺(tái)窗口和Start 按鈕MATLAB 6.5 的啟動(dòng)平臺(tái)窗口可以幫助用戶方便地打開(kāi)和調(diào)用MATLAB的各種程序、函數(shù)和幫助文件。MATLAB 6.5主窗口左下角還有一個(gè) Start 按鈕,單擊該按鈕會(huì)彈出一個(gè)菜單,選擇其中的命令可以執(zhí)行 MATLAB產(chǎn)品的各種工具,并且可以查閱 MATLAB 包含的各種資源。1.4MATLAB幫助系統(tǒng)幫助窗口進(jìn)入

10、幫助窗口可以通過(guò)以下3 種方法:(1) 單擊 MATLAB主窗口工具欄中的 Help 按鈕。(2) 在命令窗口中輸入 helpwin 、helpdesk 或 doc。(3) 選擇 Help 菜單中的“ MATLAB Help”選項(xiàng)。幫助命令MATLAB幫助命令包括 help 、lookfor 以及模糊查詢。1help 命令(1)直接輸入 help 命令將會(huì)顯示當(dāng)前幫助系統(tǒng)中所包含的所有項(xiàng)目;(2)help 加函數(shù)名來(lái)顯示該函數(shù)的幫助說(shuō)明。2lookfor 命令help 命令只搜索出那些關(guān)鍵字完全匹配的結(jié)果, lookfor 命令對(duì)搜索范圍內(nèi)的 M 文件進(jìn)行關(guān)鍵字搜索,條件比較寬松。lookfo

11、r 命令只對(duì) M 文件的第一行進(jìn)行關(guān)鍵字搜索。 若在 lookfor 命令加上 -all 選項(xiàng),則可對(duì) M 文件進(jìn)行全文搜索。3模糊查詢MATLAB 6.0以上的版本提供了一種類似模糊查詢的命令查詢方法, 用戶只需要輸入命令的前幾個(gè)字母, 然后按 Tab 鍵,系統(tǒng)就會(huì)列出所有以這幾個(gè)字母開(kāi)頭的命令。演示系統(tǒng)在幫助窗口中選擇演示系統(tǒng) (Demos)選項(xiàng)卡,然后在其中選擇相應(yīng)的演示模塊,或者在命令窗口輸入 Demos,或者選擇主窗口 Help 菜單中的 Demos 子菜單,打開(kāi)演示系統(tǒng)。第 2 章 Matlab 及其應(yīng)用2.1、MATLAB的基本矩陣運(yùn)算簡(jiǎn)單矩陣輸入1、命令行簡(jiǎn)單鍵盤輸入用于很少數(shù)

12、據(jù)輸入矩陣的方向: ,;NaNInf2、文件形式輸入文本文件:從文本文件中讀入數(shù)據(jù)mat 文件: matlab 自有的數(shù)據(jù)格式語(yǔ)句生成矩陣1、線性等間距格式矩陣( 1) X=起始值:增加值:結(jié)束值( 2) linspace 命令a=linspace(1,10,5);( 3) logspace 命令b=logspace(0,2,10)2、矩陣連接c=a b;生成矩陣的函數(shù)zerosoneseyerandn矩陣運(yùn)算1、矩陣的運(yùn)算符:加法ab:減法(除法) ;a b* :乘法;點(diǎn)乘: .*a / b(左除法)ba/ :右除;右除: ./對(duì)矩陣 :Ax b:左除;左除: .x A 1bInv ( A

13、)* b;xA b:乘方2、矩陣的轉(zhuǎn)置等運(yùn)算 共軛轉(zhuǎn)置; . 轉(zhuǎn)置inv:矩陣求逆det:求行列式值eig:求特征值與特征向量運(yùn)算規(guī)則:從左到右;先乘除后加減;乘方運(yùn)算符最高( 1)兩矩陣加減,前提是維數(shù)相同,進(jìn)行加減運(yùn)算時(shí),對(duì)應(yīng)的元素進(jìn)行加減;( 2)矩陣與標(biāo)量加減,用矩陣中的每個(gè)元素都與標(biāo)量進(jìn)行加減運(yùn)算;( 3)兩矩陣相乘,前提是前一矩陣的列等于后一矩陣的行,與數(shù)學(xué)約定一樣;( 4)矩陣與標(biāo)量相乘,用矩陣中的每個(gè)元素都與標(biāo)量進(jìn)行相乘;( 5)矩陣中的元素對(duì)元素的相乘: .*矩陣中的元素對(duì)元素的相除:./.z=x.yx,y 均為向量: z(i)=x(i) y(i)x 為向量 ,y 為標(biāo)量:

14、z(i)=x(i) yx 為標(biāo)量 ,y 為向量: z(i)=xy(i)矩陣的超越函數(shù)函 數(shù)含義函 數(shù)含義名名abs絕對(duì)值或者復(fù)數(shù)sign符號(hào)函數(shù)模rem留數(shù)sqrt平方根sin正弦real實(shí)部cos余弦imag虛部tan正切conj復(fù)數(shù)共軛asin反正弦round4舍5入到整數(shù)acos反余弦fix舍入到最接近 0 的atan反正切整數(shù)floor舍入到最接近-atan2第四象限反正切的整數(shù)函 數(shù)含義ceil舍入到最接近 的名整數(shù)sinh雙曲正弦cosh雙曲余弦log自然對(duì)數(shù)tanh雙曲正切l(wèi)og10以 10 為底的對(duì)數(shù)exp自然指數(shù)2.2 關(guān)系和邏輯運(yùn)算1、 關(guān)系操作符(1)MATLAB常用的關(guān)

15、系操作符有:<(小于 )、<=(小于或等于 )、>(大于 )、>=(大于或等于 )、= =(等于 )、 =(不等于 )。(2)MATLAB的關(guān)系操作符可以用來(lái)比較兩個(gè)大小相同的數(shù)組,或者比較一個(gè)數(shù)組和一個(gè)標(biāo)量。在與標(biāo)量比較時(shí),結(jié)果和數(shù)組大小一樣。(3)如果滿足指定的關(guān)系,返回1,否則返回 0。?a=1:9;b=a>4b =000011111?c=a(a>4)c =567892 、邏輯操作符(1)邏輯操作符定義了一種與或非的關(guān)系表達(dá)式。MATLAB的邏輯操作符有&(與 )、|( 或)、(非)(2)所有邏輯運(yùn)算符連接的兩個(gè)操作數(shù)或者同維、同大小,或者其中

16、一個(gè)為標(biāo)量。(3)邏輯運(yùn)算符都是對(duì)元素的操作,每個(gè)非零元素都當(dāng)作 “ 1處”理,邏輯運(yùn)算的結(jié)果是由 1 和 0 構(gòu)成的矩陣。例如:?c=(a>4)c = 111100000?c=(a>4)&(a<7)c =000011000與邏輯運(yùn)算有關(guān)的函數(shù)函數(shù):( 1) all(A):c=all(x),則c=1,向量 x 中全為非零元素;c=0,向量 x 中含有零元素( 2) any(A):c=any(x),則c=1,向量 x 中含有非零元素;c=0,向量 x 中全為零元素2.3、矩陣操作矩陣下標(biāo)1、MATLAB通過(guò)確認(rèn)下標(biāo), 可以對(duì)矩陣進(jìn)行插入子塊、 提取子塊、刪除子塊(刪除某

17、些行列)和重排子塊的操作。>>B=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 這樣的命令。注意 :在提取矩陣值時(shí),行或列的值大于矩陣的大小,則出錯(cuò);在給矩陣賦值時(shí),如果行或者列超出矩陣的大小,則 MATLAB 自動(dòng)擴(kuò)充矩陣的規(guī)模,使得可以賦值,擴(kuò)充部分以零填充。3、利用矩陣下標(biāo), MATLAB還提供了子矩陣功能。 同樣是上面的 a(n,m),如果 n

18、和 m 是向量,而不是標(biāo)量,則將獲得指定矩陣的子塊 .4、同樣,矩陣的子塊還可以被賦值。如果在取子塊時(shí),n 或 m 是 “ :,”則返回指定的所有行或列。5、矩陣的序號(hào)編址:按列計(jì)數(shù)。矩陣大小1、在 MATLAB命令行中,使用whos 命令可以查看到所有變量的大小。2、為了獲得矩陣或者向量的大小, MATLAB 還提供了兩個(gè)有用的函數(shù) size 和 length 。3、size 按照下面的形式使用: m,n=size(a,x)。一般的,(1)不用參量 x 時(shí):當(dāng)只有一個(gè)輸出變量時(shí), size返回一個(gè)行向量, 第一個(gè)數(shù)為行數(shù), 第二個(gè)數(shù)為列數(shù);如果有兩個(gè)輸出變量,第一個(gè)返回量為行數(shù),第二個(gè)返回?cái)?shù)

19、為列數(shù)。 ( 2)當(dāng)使用 x 時(shí): x=1 返回行數(shù), x=2 返回列數(shù),這時(shí)只有一個(gè)返回值。4、length 返回行數(shù)或者列數(shù)的最大值,即length(a)=max(size(a)。矩陣操作函數(shù)MATLAB提供了一組執(zhí)行矩陣操作的函數(shù),例如:flipud(a) 使得矩陣上下翻轉(zhuǎn),fliplr(a) 使得矩陣左右翻轉(zhuǎn)矩陣查找和排序1、子矩陣的查找使用find 命令完成,它返回關(guān)系表達(dá)式為真的下標(biāo)。例如:?a=10:20;?find(a>15)ans =78910112、矩陣的排序使用sort 函數(shù),它將矩陣按照升序排列。2.4時(shí)間和日期1、日歷函數(shù) :calendar2、時(shí)間函數(shù) :cl

20、ock3、查看 CPU 時(shí)間 :cputime4、日期函數(shù) :date5、秒表定時(shí) :tictoc2.5 退出和保存工作空間:1 、 save:工作空間中的所有變量保存在磁盤上名為matlab.mat的文件中。2 、 save 文件名 變量名 將指定的變量保存在指定的文件中。如: >>save temp x y z把 x y z 這 3 個(gè)變量保存在文件 temp.mat 中。3、下次加載 MATLAB時(shí),可以利用 load 命令將保存在文件中的變量恢復(fù)到工作空間中,其格式為:( 1) load 將保存在 matlab.mat 中的變量裝入到 matlab 空間中。( 2) loa

21、d 文件名 變量名 從指定文件中將指定的變量裝入到matlab 的工作空間中。如: >>load temp x 從文件 temp.mat中只將變量 x 裝入到matlab 的工作空間中。2.6 Matlab 的變量1、基本運(yùn)算變量逗號(hào)、分號(hào)的意義行內(nèi)編輯、注釋、運(yùn)算規(guī)則2、變量要求變量區(qū)分字母的大小寫名字不能超過(guò)31 個(gè)字符變量必須以字母開(kāi)頭,之后可以是任意字母、數(shù)字或者下劃線變量中不能含有標(biāo)點(diǎn)符號(hào)特殊變量復(fù)數(shù)不需要特殊的處理,可以直接進(jìn)行。復(fù)數(shù)可以表示為: a=10-9iMATLAB數(shù)據(jù)類型 :雙精度型、字符型、稀疏型、單元型、結(jié)構(gòu)型、8 位型最常使用的是雙精度型和字符型;稀疏型

22、用于稀疏矩陣;單元型和結(jié)構(gòu)型用于編寫大型軟件; 8 位型( 6.0 以上版本: 16 位型、 32 位型)用于圖象處理。1、雙精度型 (double):在缺省情況下,當(dāng)結(jié)果為整數(shù),作為整數(shù)顯示;當(dāng)結(jié)果為實(shí)數(shù),以小數(shù)后4位的精度近似顯示。如果結(jié)果中的有效數(shù)字超出了這一范圍,以科學(xué)計(jì)數(shù)法顯示結(jié)果。2、字符型 (char):>> a='sss''bbb'a =sss bbb( 1)字符數(shù)組的定義:字符數(shù)組就是字符串,字符串中的每一個(gè)字符在系統(tǒng)內(nèi)部都相應(yīng)地表示一個(gè)數(shù)值。a='You are welcome!'a =You are welcom

23、e!size(a)ans =116相關(guān)函數(shù)A、函數(shù) disp 用來(lái)顯示字符串: disp('Hello')HelloB、判斷一個(gè)變量是否為字符型數(shù)組,可以用函數(shù)class或 ischar。x=class(a)y=ischar(a)x =chary =1( 2)字符與數(shù)值的相互轉(zhuǎn)換:double :將一個(gè)字符串轉(zhuǎn)換為一個(gè)數(shù)值char:將數(shù)值轉(zhuǎn)換為字符串s='Good morning!'s1=double(s)s2=char(s1)s =Good morning!s1 =711111111003210911111411010511010333s2 =Good mor

24、ning!( 3)字符串的比較A、strcmp:判別兩個(gè)字符串是否相等B、strncmp :判別兩個(gè)字符串的前n 個(gè)字符是否相等s1='glisten's2='glitter'a1=strcmp(s1,s2)a2=strncmp(s1,s2,3)a1 =0a2 =1( 4)二維字符數(shù)組:創(chuàng)建二維字符數(shù)組時(shí),每行的長(zhǎng)度要相等。如果字符串長(zhǎng)度不等,可以用空格充填較短的字符串。例如:s='abc ''defg's =abc defg用 char 函數(shù)創(chuàng)建二維字符數(shù)組比較方便。當(dāng)字符串長(zhǎng)度不等時(shí),char 函數(shù)可以自動(dòng)地在較短的字符中加上

25、一定數(shù)量的尾部空格,使其與最長(zhǎng)字符串的長(zhǎng)度相等。例如:y=char('abc','defg','abcde')z1=length(y)z2=size(y)y =abcdefgabcdez1 =5z2 =353、稀疏型 (sparse):含有大量 0的矩陣,稱為 矩陣。只存儲(chǔ)矩陣中的非0 元素>>speye(4)生成單位稀疏矩陣ans =(1,1)1(2,2)1(3,3)1(4,4)14、單元型 (cell):把不同類型的數(shù)據(jù)存儲(chǔ)在一起的數(shù)組稱為單元數(shù)組。 單元數(shù)組中的每個(gè)元素是其他任意一種數(shù)據(jù)類型,通??梢詫⑾嚓P(guān)的尺寸大小不同的數(shù)據(jù)組

26、合在一起。>> a=1,'good',1 2 3a =1'good'1x3 double( 1)創(chuàng)建單元數(shù)組: cellc=cell(n):生成一個(gè) n*n 維的空數(shù)組c=cell(m,n):生成一個(gè) m*n 維的空數(shù)組c=cell(size(A):生成一個(gè)和所包含的數(shù)組A 階數(shù)完全相同的空數(shù)組EX1:A=eye(2) c=cell(size(A) A = 1001c =EX2:給單元數(shù)組賦值D=cell(1,3)D1,1='Good' D1,2=1 2;4 5;D1,3=1+4i;DD =D ='Good'2x2 d

27、ouble1.0000+ 4.0000iEX3:利用直接輸入的方法創(chuàng)建單元數(shù)組,單元數(shù)組的下標(biāo)用圓括號(hào)括起來(lái),右邊是單元數(shù)組的內(nèi)容,用花括號(hào)括起來(lái)。Aa(1,1)='GOOD'Aa(1,2)=200;Aa(2,1)=5-6i;Aa(3,2)=1 2;4 5Aa ='GOOD'2005.0000- 6.0000i2x2 double( 2)單元數(shù)組的顯示A、直接顯示AaAa ='GOOD'2005.0000- 6.0000i2x2doubleB、利用函數(shù)顯示celldisp(Aa)celldisp(Aa,'Bb')C、利用圖形顯示單

28、元數(shù)組cellplot(Aa)cellplot(Aa, legend )GOOD2005-6i( 4)單元數(shù)組的變形E=reshape(X,1,6)Welcomecellplot(E)E ='Welcome'4x4 double3x3 double( 5)字符型單元數(shù)組:由于字符矩陣要求矩陣的每一行的長(zhǎng)度相等,需要在字符串的尾端加入空格,在讀取的時(shí)候,又常常將末尾的空格去掉,很不方便。由于單元數(shù)組允許不同的單元內(nèi)有不同類型和長(zhǎng)度的數(shù)據(jù),問(wèn)題就可以避免。 cellstr: 將標(biāo)準(zhǔn)的字符型數(shù)組轉(zhuǎn)換為字符型單元數(shù)組。EX1: ne='aaa''bb '

29、 cellstr(ne)ans ='aaa''bb'5、結(jié)構(gòu)型 (struct): 把不同類型的數(shù)組存儲(chǔ)在一起的數(shù)組稱為結(jié)構(gòu)數(shù)組。結(jié)構(gòu)數(shù)組相當(dāng)于數(shù)據(jù)庫(kù)的記錄。結(jié)構(gòu)數(shù)組中不同類型的數(shù)組是通過(guò)不同的域名來(lái)區(qū)分的。在 MATLAB 的結(jié)構(gòu)數(shù)組中,每個(gè)元素都是由不同的數(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('

30、name','zhao','Li','wang','age',20,21,29,'address','changda')%注意: 所有的 address 都賦相同的值sxx(1)sxx(2)B、利用賦值語(yǔ)句直接生成結(jié)構(gòu)數(shù)組='zhou'sss.age='10'sss.address='changda'='zhao'sss =name: 'zhao'age: '10&#

31、39;address: 'changda'sss(3).address='chang an'sss =1x3 struct array with fields:nameageaddress相關(guān)函數(shù)A、getfield :獲取結(jié)構(gòu)數(shù)組中某個(gè)域的內(nèi)容B、setfield :設(shè)置結(jié)構(gòu)數(shù)組中某個(gè)域的內(nèi)容C、rmfield :刪除結(jié)構(gòu)數(shù)組的域D、isfield :判斷某個(gè)變量域是否是一個(gè)結(jié)構(gòu)數(shù)組的域E、 isstruct:判斷某個(gè)變量域是否是一個(gè)結(jié)構(gòu)數(shù)組第 3 章 Matlab 編程基礎(chǔ) 3.1 Matlab 程序設(shè)計(jì)1、設(shè)置完整的路徑;(1)對(duì)于用戶程序中使用的文件名和

32、變量名,系統(tǒng)按照以下順序搜索:A、查找對(duì)象是否是工作空間的變量;B、查找對(duì)象是否是系統(tǒng)的內(nèi)部函數(shù);C、查找對(duì)象是否是在系統(tǒng)的當(dāng)前目錄下。(2)路徑設(shè)置的方法:A、在命令窗口下使用cd 命令;B、在菜單欄下的Current directory 下。2、參數(shù)值要集中放在程序的開(kāi)始部分,便于維護(hù);3、每行程序后輸入分號(hào),則執(zhí)行程序行不會(huì)顯示在屏幕上;如果不輸入分號(hào),則執(zhí)行程序行會(huì)顯示在屏幕上;4、符號(hào)“ %”后的內(nèi)容是注釋行;5、如果語(yǔ)句在一行中放不下,則可以在行末鍵入三個(gè)點(diǎn)( ),指示下一行為續(xù)行;6、遇到不明白的命令,多使用在線幫助命令或系統(tǒng)演示示例;7、盡量使程序模塊化,采用主程序調(diào)用子程序的

33、方法,將所有子程序合并在一起來(lái)執(zhí)行全部的操作。MABLAB 程序的基本組成部分:%說(shuō)明部分清除命令(可選)定義變量(局部變量和全局變量)按照順序行執(zhí)行的命令語(yǔ)句控制語(yǔ)句開(kāi)始控制語(yǔ)句體控制語(yǔ)句結(jié)束其他命令(如繪圖等)的工作方式有二種1. 交互式的指令操作方式。 即用戶在命令窗口中輸入命令并按下回車鍵后, 系統(tǒng)執(zhí)行該指令并立即給出運(yùn)算結(jié)果。2. m 文件的編程方式。 m 文件是由 matlab 語(yǔ)句構(gòu)成的文件 ,且文件名必須以 .m 為擴(kuò)展名,如ex.m。用戶可以用任何文件編輯器來(lái)對(duì)M 文件進(jìn)行編輯。MATLAB語(yǔ)言編寫的磁盤文件稱為M 文件,擴(kuò)展名為m,格式為 *.m ,M 文件可以互相調(diào)用,也

34、可以調(diào)用它自己。( 1) M 文件在功能上分為:A、底稿文件對(duì)于簡(jiǎn)單的問(wèn)題,在命令窗口的 MATLAB 提示符下,輸入 MATLAB 的語(yǔ)句,這樣可以快速有效地得到結(jié)果。當(dāng)問(wèn)題比較復(fù)雜時(shí),需要執(zhí)行一系列語(yǔ)句,在 MATLAB 提示符下鍵入語(yǔ)句就變的很麻煩。對(duì)這個(gè)問(wèn)題, MATLAB提供了一種邏輯解決方案, 允許用戶把 MATLAB 命令放在一個(gè)簡(jiǎn)單的文本文件中,這些文件稱為底稿文件。B.函數(shù)文件a.格式:functionf1,f2, =fun(x,y,z, )其中 x,y,z, 是形式輸入?yún)?shù), f1,f2, 為返回的形式輸出參數(shù)值, fun 為形式函數(shù)名,函數(shù)名一般就是這個(gè)函數(shù)文件的文件名。

35、b.文件前面幾行由 %開(kāi)始的語(yǔ)句構(gòu)成了M 文件的幫助信息,當(dāng)鍵入:help 文件名可得到文件的說(shuō)明信息。 (help 為在線幫助)(2)函數(shù)文件和底稿文件的區(qū)別:a、形式上,函數(shù)文件第一行必須包含關(guān)鍵字 function ,且有函數(shù)名和輸入輸出形式參數(shù),而底稿文件沒(méi)有;b、函數(shù)文件可以傳遞參數(shù),底稿文件不具備參數(shù)傳遞功能;c、函數(shù)文件中定義及使用的變量都是局部變量,只在本函數(shù)內(nèi)有效,底稿文件中定義及使用的變量都是全局變量,在退出文件后仍有效。程序流程控制1.順序結(jié)構(gòu): Matlab 從上到下依次執(zhí)行各語(yǔ)句,該結(jié)構(gòu)最簡(jiǎn)單。2.循環(huán)結(jié)構(gòu)(1)for-end 循環(huán)用于循環(huán)次數(shù)事先確定的,格式為for

36、 i=n:s:m(初值 :步長(zhǎng) :終值 )語(yǔ)句體ends 為步長(zhǎng),可以為正數(shù),負(fù)數(shù)或小數(shù)。? 說(shuō)明:變量 x 通常稱為循環(huán)變量。 循環(huán)變量可以是一個(gè)數(shù)組。 如果循環(huán)變量是數(shù)組,在 for 和 end 語(yǔ)句之間的 commands按數(shù)組中的每一列執(zhí)行一次。在每一次迭代中, x 被指定為數(shù)組的下一列,即在第 n 次循環(huán)中,x=array(:, n)。例如,x=0 2 3;4 7 9for a=x / 把矩陣 x 的每一列元素依次賦給變量 A b=a+4end運(yùn)行結(jié)果:x =023479b =48b =611b =713與 For 循環(huán)相關(guān)的其它規(guī)定:(1)For 循環(huán)不能用 For 循環(huán)內(nèi)重新賦值

37、循環(huán)變量n 來(lái)終止。(2)For 循環(huán)可以嵌套。(3)當(dāng)有一個(gè)等效的數(shù)組方法來(lái)解給定的問(wèn)題時(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每通過(guò)一次循環(huán)要花費(fèi)時(shí)間對(duì) x 分配更多的內(nèi)存。為了消去這個(gè)步驟, For 循環(huán)的例子應(yīng)重寫為x=zeros(1,10);%preallocated memory for x? for n=1:10? x(n)=sin(n*pi/ 10);?

38、end( 2) while-end 循環(huán)用于循環(huán)次數(shù)不能事先確定的,格式為while 表達(dá)式語(yǔ)句體end只有表達(dá)式為真,就執(zhí)行語(yǔ)句體,表達(dá)式為假,終止該循環(huán)。說(shuō)明:表達(dá)式可以是一個(gè)矩陣,且矩陣中的所有元素都為非 0 時(shí),才執(zhí)行循環(huán)體中的內(nèi)容。如果表達(dá)式為一空矩陣,則循環(huán)體中的內(nèi)容永遠(yuǎn)不會(huì)被執(zhí)行。注意:要想在任何時(shí)候終止循環(huán)(for 或 while 循環(huán)),可利用 break 語(yǔ)句。num=1;a=0;while num<=100a=a+num;num=num+1;endax=0 2 3;4 7 9for a=xb=a+4breakendx =023479b =483.條件選擇語(yǔ)句 if格

39、式為if表達(dá)式 1語(yǔ)句體endif表達(dá)式 1語(yǔ)句體 1elseif表達(dá)式2語(yǔ)句體2.else語(yǔ)句體elseend如果在表達(dá)式中的所有元素為真(非零 ),那么就執(zhí)行if 和 endcommands。apples=10;%number of apples? cost=apples*25%cost of applescost =250? if apples>5%give 20% discount for larger purchases語(yǔ)言之間的cost=(1-20/100)*cost;end? cost cost =2004.Switch 分支結(jié)構(gòu)語(yǔ)句格式為switch 表達(dá)式 0 case

40、 表達(dá)式 1 的值命令 1case 表達(dá)式 2 的值命令 2. otherwise命令行 nendswitch 語(yǔ)句可以根據(jù)一個(gè)變量或表達(dá)式的值執(zhí)行特定的語(yǔ)句。先計(jì)算 switch 后邊表達(dá)式 0 的值,然后檢查 case子句后面的值是否與表達(dá)式 0 的值相等,如表達(dá)式 1 的值與之相等,則執(zhí)行命令行 1,否則繼續(xù)檢查第二個(gè) case 子句,如果所有 case 子句的值都不等于表達(dá)式 0 的值,則執(zhí)行 otherwise 后面的命令行 n。在 switch 中,如果一個(gè) case條件滿足,執(zhí)行完這個(gè) case后,直接跳到 end 語(yǔ)句后面的語(yǔ)句,不在判斷其他 case 語(yǔ)句。5、return

41、語(yǔ)句用來(lái)終止當(dāng)前正在執(zhí)行的函數(shù)中的命令,返回調(diào)用它的函數(shù)。第 4 章 MATLAB多項(xiàng)式計(jì)算4.1 多項(xiàng)式多項(xiàng)式的表示Matlab 中用按降冪排列的多項(xiàng)式系數(shù)組成的行向量表示多項(xiàng)式,如 :p(x)=x3-2x-5 被表示為 : p = 1 0 2 5;1多項(xiàng)式的加減運(yùn)算2多項(xiàng)式乘法運(yùn)算函數(shù) conv(P1,P2)用于求多項(xiàng)式 P1 和 P2 的乘積。這里, P1、 P2 是兩個(gè)多項(xiàng)式系數(shù)向量。例 4-1 求多項(xiàng)式 x4+8x3-10 與多項(xiàng)式 2x2-x+3 的乘積3多項(xiàng)式除法函數(shù) Q,r=deconv(P1,P2)用于對(duì)多項(xiàng)式 P1 和 P2 作除法運(yùn)算。 其中 Q 返回多項(xiàng)式 P1 除以

42、P2 的商式, r 返回 P1 除以 P2 的余式。這里, Q 和 r 仍是多項(xiàng)式系數(shù)向量。deconv 是 conv 的逆函數(shù),即有P1=conv(P2,Q)+r。例 4-2 求多項(xiàng)式 x4+8x3-10 除以多項(xiàng)式 2x2-x+3 的結(jié)果。多項(xiàng)式的導(dǎo)數(shù)對(duì)多項(xiàng)式求導(dǎo)數(shù)的函數(shù)是:p=polyder(A):求多項(xiàng)式 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 是多項(xiàng)式的向量表示,結(jié)果 p,q 也是多項(xiàng)式的向量表示。例 4-3 求有理分式的導(dǎo)數(shù)。命令如下:

43、P=1;Q=1,0,5;p,q=polyder(P,Q)多項(xiàng)式的求值兩種求多項(xiàng)式值的函數(shù):polyval(P,x)polyvalm(P,x)兩者的區(qū)別在于前者是代數(shù)多項(xiàng)式求值,而后者是矩陣多項(xiàng)式求值。1代數(shù)多項(xiàng)式求值polyval 函數(shù)用來(lái)求代數(shù)多項(xiàng)式的值,其調(diào)用格式為:Y=polyval(P,x)若 x 為一數(shù)值,則求多項(xiàng)式在該點(diǎn)的值; 若 x 為向量或矩陣, 則對(duì)向量或矩陣中的每個(gè)元素求其多項(xiàng)式的值。例 4-4 已知多項(xiàng)式 x4+8x3-10,分別取 x=1.2 和一個(gè) 2×3矩陣為自變量計(jì)算該多項(xiàng)式的值。2矩陣多項(xiàng)式求值polyvalm 函數(shù)要求 x 為方陣,它以方陣為自變量求

44、多項(xiàng)式的值。設(shè) A 為方陣, P 代表多項(xiàng)式 x3-5x2+8,那么polyvalm(P,A)的含義是:A*A*A-5*A*A+8*eye(size(A)而 polyval(P,A)的含義是:例 4-5 仍以多項(xiàng)式 x4+8x3-10 為例,取一個(gè) 2×2矩陣為自變量分別用 polyval 和 polyvalm 計(jì)算該多項(xiàng)式的值。多項(xiàng)式求根n 次多項(xiàng)式具有 n 個(gè)根,當(dāng)然這些根可能是實(shí)根, 也可能含有若干對(duì)共軛復(fù)根。 MATLAB提供的roots 函數(shù)用于求多項(xiàng)式的全部根,其調(diào)用格式為:x=roots(P)其中 P 為多項(xiàng)式的系數(shù)向量, 求得的根賦給向量x,即 x(1),x(2),

45、,x(n)分別代表多項(xiàng)式的 n 個(gè)根。注意:根被儲(chǔ)存為列向量例 4-6求多項(xiàng)式命令如下:x4+8x3-10 的根。A=1,8,0,0,-10;x=roots(A)若已知多項(xiàng)式的全部根,則可以用poly 函數(shù)建立起該多項(xiàng)式,其調(diào)用格式為:P=poly(x)若 x 為具有 n 個(gè)元素的向量,則 poly(x) 建立以 x 為其根的多項(xiàng)式,且將該多項(xiàng)式的系數(shù)賦給向量 P。例 4-7 已知 f(x)(1) 計(jì)算 f(x)=0 的全部根。(2) 由方程 f(x)=0 的根構(gòu)造一個(gè)多項(xiàng)式 g(x),并與 f(x)進(jìn)行對(duì)比。命令如下:P=3,0,4,-5,-7.2,5;X=roots(P)%求方程f(x)=

46、0的根G=poly(X)%求多項(xiàng)式g(x)多項(xiàng)式擬合p=polyfit(x,y,n): 用最小二乘法對(duì)已知數(shù)據(jù)x,y進(jìn)行擬合,以求得n 階多項(xiàng)式的系數(shù)向量;p,s=polyfit(x,y,n):p 為返回的擬合后的多項(xiàng)式的系數(shù)向量, s 為使用函數(shù) polyval 獲得的錯(cuò)誤預(yù)估計(jì)值。例 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 中, 實(shí)現(xiàn)這些 插值 的函 數(shù)是 int

47、erp1 ,其 調(diào)用 格式為:Y1=interp1(X,Y,X1,'method')函數(shù)根據(jù) X,Y的值,計(jì)算函數(shù)在 X1 處的值。 X,Y是兩個(gè)等長(zhǎng)的已知向量,分別描述采樣點(diǎn)和樣本值, X1 是一個(gè)向量或標(biāo)量,描述欲插值的點(diǎn), Y1 是一個(gè)與 X1 等長(zhǎng)的插值結(jié)果。method 是插值方法,允許的取值有A 、 nearest尋找最近數(shù)據(jù)點(diǎn) ,由其得出函數(shù)值 ;B、 linear線性插值 (該函數(shù)的默認(rèn)方法 );C、 spline樣條插值 ,數(shù)據(jù)點(diǎn)處光滑 -左導(dǎo)等于右導(dǎo) ;D、 cubic三次插值例 4-9某觀測(cè)站測(cè)得某日4:00 時(shí)至 18:00 時(shí)之間每隔 2 小時(shí)的室內(nèi)外溫度(),用 3 次樣條插值分別求得該日室內(nèi)外4:30 至 17:30 時(shí)之間每隔 2 小時(shí)各點(diǎn)的近似溫度 ()。設(shè)時(shí)間變量 h 為一行向量,溫度變量 t 為一個(gè)兩列矩陣, 其中第一列存放室內(nèi)溫度,第二列儲(chǔ)存室外溫度。命令如下:h =4:2:18;t=18,20,22,25,30,2

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論