Matlab軟件應(yīng)用與開發(fā)(11-12).ppt_第1頁
Matlab軟件應(yīng)用與開發(fā)(11-12).ppt_第2頁
Matlab軟件應(yīng)用與開發(fā)(11-12).ppt_第3頁
Matlab軟件應(yīng)用與開發(fā)(11-12).ppt_第4頁
Matlab軟件應(yīng)用與開發(fā)(11-12).ppt_第5頁
已閱讀5頁,還剩91頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Matlab 軟件應(yīng)用與開發(fā),主講教師:尹 鳳 聯(lián)系方式:66641(短號(hào)) ,課程安排,Matlab簡(jiǎn)介 Matlab基礎(chǔ)知識(shí) 數(shù)組 Matlab語言程序設(shè)計(jì) 符號(hào)計(jì)算和符號(hào)微積分 Matlab科學(xué)繪圖 Matlab在數(shù)值分析、優(yōu)化中的應(yīng)用,1.1 初始Matlab,Matlab是MathWorks公司的產(chǎn)品,是一個(gè)為科學(xué)和工程 計(jì)算而專門設(shè)計(jì)的高級(jí)交互式軟件包。Matlab環(huán)境集成了圖 示與精確的數(shù)值計(jì)算,是一個(gè)可以完成各種計(jì)算和數(shù)據(jù)可視 化的強(qiáng)有力的工具。Matlab可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和 數(shù)據(jù)、創(chuàng)建用戶界面、與Fortran、C語言混合編程等,主要 應(yīng)用于工程計(jì)算、控制設(shè)計(jì)、信號(hào)

2、處理與通訊、圖像處理、 信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。,1.2 Matlab的歷史背景,Matlab是Matrix(矩陣)和Laboratory(實(shí)驗(yàn)室)兩個(gè)英語單詞的 前3個(gè)字母的組合。它一開始是美國(guó)新墨西哥大學(xué)計(jì)算機(jī)系 主任Clever Moler博士在20世紀(jì)70年代后期為L(zhǎng)inpack和 Eispack這兩個(gè)矩陣運(yùn)算的軟件包編寫的接口程序,目的是 方便所設(shè)立的線性代數(shù)課程的教學(xué),當(dāng)時(shí)為這個(gè)接口程序取 了一個(gè)名字叫做Matlab。在以后的一段時(shí)間,Matlab在很多 大學(xué)里作為教學(xué)輔助軟件使用。1983年,工程師John Little 和Clever Moler博士,用C語言開發(fā)了

3、Matlab的第二代專業(yè) 版本,這一版本同時(shí)具有了數(shù)值計(jì)算和數(shù)據(jù)可視化的功能。,1.3 Matlab的特點(diǎn),Matlab操作簡(jiǎn)單,功能強(qiáng)大,應(yīng)用廣泛。它具有編程效率 高、用戶使用方便、擴(kuò)充能力強(qiáng)、語句簡(jiǎn)單、高效方便的矩 陣和數(shù)組運(yùn)算、方便的繪圖功能、開放的源程序等特點(diǎn)。 Matlab具有很多有用的工具箱,如通訊工具箱、控制系統(tǒng) 工具箱、財(cái)政金融工具箱、圖像處理工具箱、神經(jīng)網(wǎng)絡(luò)工具 箱、優(yōu)化工具箱、信號(hào)處理工具箱、統(tǒng)計(jì)工具箱、小波工具 箱等。 最新的版本是2009年3月6日發(fā)布的Matlab 7.8(R2009a)。,1.4 Matlab 7.0 的安裝,網(wǎng)上下載的Matlab 7.0共三個(gè)*.

4、ISO后綴名的映像文件。為 了提高安裝速度,建議下載一款虛擬光驅(qū)軟件(如DAEMON Tools)安裝映像文件。首先用虛擬光驅(qū)軟件載入CD1的ISO文 件,進(jìn)入虛擬光盤點(diǎn)擊setup.exe文件,進(jìn)入安裝畫面。,Matlab 7.0的安裝(續(xù)1),如果用戶以前安裝了Matlab,可以選擇“Update license without installing anything,using a new PLP”選項(xiàng)升級(jí)。否 則直接點(diǎn)擊“Next”進(jìn)入用戶信息和注冊(cè)碼輸入界面。進(jìn)入虛 擬光盤Crack文件夾點(diǎn)擊keygen.exe,復(fù)制下安裝密碼填入注 冊(cè)碼輸入框。,Matlab 7.0 的安裝(續(xù)2

5、),點(diǎn)擊“Next”進(jìn)入使用協(xié)議界面,選擇“Yes”即可, 單擊“Next”進(jìn)入安裝功能選項(xiàng)對(duì)話框。,Matlab 7.0 的安裝(續(xù)3),點(diǎn)擊“Next”進(jìn)入“安裝路徑”對(duì)話框。,Matlab 7.0的安裝(續(xù)4),進(jìn)入安裝功能界面,只要單擊“Install”就可以進(jìn)入文件復(fù)制界 面,開始安裝。,Matlab 7.0 的安裝(續(xù)5),第一張光盤復(fù)制完成后,安裝向?qū)?huì)彈出更換光盤提示 框, 通過虛擬光驅(qū)軟件載入CD2的映像文件,單擊提示框“OK”鍵 繼續(xù)安裝,直到文件復(fù)制完成。,1.5 如何學(xué)習(xí)Matlab,Matlab的網(wǎng)絡(luò)資源 WWW網(wǎng)站 匿名FTP網(wǎng)站 Matlab中國(guó)論壇 查看幫助,使

6、用help命令(help +函數(shù)名) 多上機(jī)實(shí)驗(yàn),熟能生巧,2. Matlab的桌面和桌面工具,2.1命令窗口,命令窗口:是用戶與Matlab交互的工具,是Matlab 執(zhí)行函數(shù)命令的窗口。默認(rèn)情況下,命令窗口總是 打開的。7.0版本中,通過選取【 Desktop 】 【 Command Window 】; 命令窗口控制函數(shù): home:移動(dòng)光標(biāo)到左上角 clc:清除命令窗口(工作空間的變量清除用命令clear) 命令歷史窗口:在命令窗口每執(zhí)行一條命令,都將 在歷史窗口記錄下來。反過來,在命令歷史窗口只 須雙擊某條歷史命令,該命令就會(huì)在命令窗口重新 執(zhí)行一次。,2.2 當(dāng)前目錄瀏覽器和搜索路徑

7、,1)當(dāng)前目錄瀏覽器 Matlab將許多內(nèi)部函數(shù)放在不同的目錄下,在調(diào) 用函數(shù)時(shí),首先查看當(dāng)前目錄,然后查看搜索路徑 中的目錄。任何需要執(zhí)行的文件都必須放在當(dāng)前目 錄或搜索路徑中,文件才能順利運(yùn)行??梢栽诿?窗口輸入cd命令改變當(dāng)前目錄。一種改變當(dāng)前目錄 快速而又高效的方法是使用桌面上的目錄工具條。,2)搜索路徑,文件在執(zhí)行時(shí)必須位于當(dāng)前目錄或者是搜索路 徑中。使用path命令可以查看Matlab默認(rèn)的搜索 路徑。 例2.1 path MATLABPATH D:MATLAB701toolboxmatlabgeneral D:MATLAB701toolboxmatlabops 例2.2 將自己

8、的目錄添加到搜索路徑中、刪除已有搜索路徑、 改變搜索順序。 pathtool,在Set Path對(duì)話框中設(shè)置。,3)常用命令,clear:清除當(dāng)前工作空間的變量 例2.3 clear %清除當(dāng)前工作空間的所有變量 clear var1 var2 %清除變量var1、var2 clear a* %清除以a開頭的變量 who:查看當(dāng)前工作空間的所有變量(信息簡(jiǎn)短) whos:作用同who。給出變量的大小、數(shù)據(jù)類 型等具體內(nèi)容。,3.數(shù)組,數(shù)組的創(chuàng)建 數(shù)組中元素的引用和變形 數(shù)組運(yùn)算 數(shù)組操作 字符串和數(shù)組 矩陣運(yùn)算 矩陣特征參數(shù),3.1數(shù)組的創(chuàng)建,3.1.1 構(gòu)造數(shù)組 可以通過鍵入數(shù)組中每個(gè)元素的

9、值來建立并輸入一個(gè)數(shù) 組,當(dāng)數(shù)組中的元素個(gè)數(shù)較少時(shí),這種方法非常適用。 創(chuàng)建一個(gè)數(shù)組,只須以左方括號(hào)開始,以逗號(hào)或空格為間 隔輸入每行元素值,各行元素間以分號(hào)為間隔,最后以右方 括號(hào)結(jié)尾即可。 例3.1 a=0,1,2,3,4 5 6 7,8,9 a =0 1 2 3 4 5 6 7 8 9 cos(a) ans = Columns 1 through 8 1.0000 0.5403 -0.4161 -0.9900 -0.6536 0.2837 0.9602 0.7539 Columns 9 through 10 -0.1455 -0.9111,3.1.2 創(chuàng)建數(shù)組的常用方法,1)冒號(hào)法。其基

10、本格式為: X=初值:增量:終值 返回值X是從初值開始,以增量為步長(zhǎng),直到不超過終值 的所有元素所構(gòu)成的向量。默認(rèn)步長(zhǎng)為1,可以省略不寫。 例 3.2 a=1:1.5:8 a= 1.0000 2.5000 4.0000 5.5000 7.0000 a=3:-pi:-5 a = 3.0000 -0.1416 -3.2832,2)調(diào)用函數(shù)linspace或logspace,函數(shù)linspace(a,b,n)返回以a為起點(diǎn)、b為終點(diǎn)的等間距的 共n個(gè)元素的數(shù)組。函數(shù)logspace與linspace類似,它相當(dāng)于 在linspace命令的基礎(chǔ)上再對(duì)每個(gè)元素做10的指數(shù)冪運(yùn)算。 例3.3 linspa

11、ce(0,1,6) ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000 logspace(0,1,6) ans = 1.0000 1.5849 2.5119 3.9811 6.3096 10.0000,3)其它方法創(chuàng)建數(shù)組,對(duì)于那些既不是線性等距又不是對(duì)數(shù)等距的數(shù)組,可以借 助下標(biāo)編址和表達(dá)式相結(jié)合的方法來避免重復(fù)輸入數(shù)據(jù)。 例3.4 x=1:2:10; y=0:-1:-5; z=x,y z = 1 3 5 7 9 0 -1 -2 -3 -4 -5 思考:如果輸入z=x;y,輸出結(jié)果會(huì)是怎樣?,3.2 數(shù)組中元素的引用和變形,引用數(shù)組中的元素是利用元素的下標(biāo)。

12、x(n)表示數(shù)組中的 第n個(gè)元素。利用冒號(hào)可以訪問多個(gè)元素。 例3.5 x=1:-2:-20; %定義數(shù)組 x(5) %訪問x的第5個(gè)元素 ans = -7 x(1:2:7) %訪問x的第1,3,5,7個(gè)元素 ans = 1 -3 -7 -11 此處,x(1:2:7)等價(jià)于x(1,3,5,7).,列向量的創(chuàng)建,前面提到的都是行向量,列向量的操作和運(yùn)算和行向量類 似。要定義一個(gè)列向量,只須在鍵入的元素直接輸入分號(hào)或 回車換行即可。 例3.6 x=3;4;5 %由分號(hào)分隔 x = 3 4 5 y=3 4 5 %由回車換行分隔,列向量和行向量之間可以通過轉(zhuǎn)置符 互相轉(zhuǎn)換。不過 需要注意的是,對(duì)于復(fù)數(shù)

13、向量,轉(zhuǎn)置符的作用是復(fù)共軛轉(zhuǎn) 置。符號(hào) . 是對(duì)于復(fù)數(shù)向量的轉(zhuǎn)置運(yùn)算 。,3.3 數(shù)組運(yùn)算,Matlab數(shù)組運(yùn)算分為標(biāo)量與數(shù)組運(yùn)算和數(shù)組與數(shù)組之 間的運(yùn)算。與矩陣不同的是,這兩種運(yùn)算都是在元素與元素 之間進(jìn)行的。 3.3.1 標(biāo)量與數(shù)組之間的運(yùn)算 標(biāo)量與數(shù)組進(jìn)行四則運(yùn)算就是這個(gè)標(biāo)量對(duì)數(shù)組中的每個(gè)元 素進(jìn)行同樣的運(yùn)算。 例3.8 a=1:5; b=a+3,c=2*a-5 b= 4 5 6 7 8 c= -3 -1 1 3 5,3.3.2 數(shù)組與數(shù)組之間的運(yùn)算,當(dāng)兩個(gè)數(shù)組具有相同維數(shù)時(shí),數(shù)組與數(shù)組之間可以進(jìn)行加、 減、乘、除運(yùn)算。,3.4 數(shù)組操作,3.4.1 Matlab對(duì)數(shù)據(jù)的物理存放形式 M

14、atlab中,數(shù)據(jù)的物理形式是按列存放。對(duì)于一個(gè)二維 數(shù)組,在內(nèi)存中的單元存放順序是:第一列元素,第二列元 素,最后一列元素。對(duì)于多維數(shù)組,則是把第二維以后 的維數(shù)作為數(shù)據(jù)平面(plane),存放順序是:第一個(gè)plane中 的矩陣,第二個(gè)plane的矩陣,直到最后一個(gè)。,3.4.2 數(shù)組維內(nèi)抽取、擴(kuò)展、刪除,3.4.3 數(shù)組的幾個(gè)常用函數(shù),對(duì)數(shù)組可以使用size函數(shù)來測(cè)量其大小,length函數(shù)返回 維的長(zhǎng)度的最大值,ndims函數(shù)返回?cái)?shù)組的維數(shù)。 例3.14 var=rand(3,4,5); %生成3*4*5大小的隨機(jī)數(shù) size(var) ans = 3 4 5 length(var) %

15、作用同max(size(var) ans = 5 ndims(var) %作用同length(size(var) ans = 3,3.5 字符串和數(shù)組,在Matlab中的字符串一般是ASCII值的數(shù)組。它作為 字符串表達(dá)式進(jìn)行顯示。,3.6 Matlab矩陣運(yùn)算,3.7 矩陣常用的命令及特征參數(shù)計(jì)算,diag(A):設(shè)A為m*n矩陣,產(chǎn)生一具有min(m,n)個(gè)元素的列向量 diag(A,k):提取矩陣第k條對(duì)角線的元素 diag(V) :設(shè)V為具有m個(gè)元素的向量,產(chǎn)生一m*m對(duì)角矩陣, 主對(duì)角線元素即為向量V的元素 diag(V,k):產(chǎn)生一個(gè)n*n(n=m+k)對(duì)角陣,其中第m條對(duì)角線的

16、元素即為向量V的元素 triu(A)、tril(A):求矩陣A的上三角陣、下三角陣 rot90(A,k) :矩陣A旋轉(zhuǎn)90o的k倍,當(dāng)k為1時(shí)可省略 fliplr(A)、flipud(A):矩陣A左右翻轉(zhuǎn)、上下翻轉(zhuǎn) inv(A):方陣A的逆矩陣 pinv(A):求非方陣,或者非滿秩的方陣A的偽逆矩陣 rank(A):矩陣A的秩 trace(A):矩陣的跡.等于矩陣的對(duì)角線元素之和,亦矩陣的特征值之和 E=eig(A):矩陣A的全部特征值,構(gòu)成向量E V,D=eig(A):矩陣A的特征值構(gòu)成對(duì)角陣D,并求A的特征向量構(gòu)成V的列 向量 det(A):矩陣A的行列式,4.Matlab語言程序設(shè)計(jì),4

17、.1 運(yùn)算符 Matlab的算術(shù)運(yùn)算符可按優(yōu)先級(jí)由低到高分為5級(jí),每一級(jí) 內(nèi)優(yōu)先級(jí)相同,運(yùn)算時(shí)從左向右結(jié)合。各級(jí)所包含的運(yùn)算符如 下: (1)轉(zhuǎn)置符(.)、冪符(.)、復(fù)共軛轉(zhuǎn)置()、矩陣冪符()。 (2)標(biāo)量加(+)、標(biāo)量減(-)。 (3)向量乘法(.*)、向量右除(./)、向量左除(.)、矩陣乘法(*)、 矩陣右除(/)、矩陣左除()。 (4)加法(+)、減法(-)。 (5)冒號(hào)運(yùn)算符。,4.2 關(guān)系運(yùn)算符、邏輯運(yùn)算符,關(guān)系運(yùn)算符 大于 = 大于或等于 = 等于 = 不等于,邏輯運(yùn)算符 y=2*pi; z=sin(x:pi/4:y); plot(z),4.5.2 命令文件(續(xù)),(3)保存

18、文件,并執(zhí)行。通過編輯器【Debug】 【 Run 】 ,或者在命令窗口輸入firstest執(zhí)行,在命令窗口可以看到執(zhí) 行結(jié)果。 注:firstest.m的第一行以%開頭的行是注解,可以使程序 易于理解與管理。一般地,第一注解行通常用來簡(jiǎn)短說明此 M文件的功能,使用help firsttest命令可查看該注釋; 命令窗口輸入whos查看工作空間的變量,可以發(fā)現(xiàn)執(zhí) 行時(shí)所建立的變量全部保留在工作空間中。 一行代碼過長(zhǎng)時(shí)使用符號(hào)“”續(xù)行符連接,4.5.3 函數(shù)文件,函數(shù)文件的一般格式為: function 輸出表=函數(shù)名(輸入表) 注釋行 函數(shù)體 例4.2 計(jì)算1+2+n的函數(shù): function

19、 output=mysum(n) %mysum函數(shù)計(jì)算直到n的和 output=0; %初始化 for i=1:n output=output+i; end,4.5.3 函數(shù)文件(續(xù)),函數(shù)文件的第一行必須以關(guān)鍵字function開始,表明該文 件是函數(shù)文件。輸入表以逗號(hào)相分割形參。輸出表是函數(shù)的 返回值。如果返回值只有一個(gè),方括號(hào)可以省略;當(dāng)返回值 不止一個(gè)時(shí),輸出表中的各個(gè)變量要以逗號(hào)隔開。 函數(shù)文件的文件名必須與函數(shù)名相同。 函數(shù)體任意位置都可以包含注釋語句。在函數(shù)體中的空行 將被忽略。函數(shù)體是實(shí)現(xiàn)函數(shù)功能的部分。函數(shù)體包含函數(shù) 調(diào)用、程序流程控制、輸入、輸出、賦值、計(jì)算等語句。 對(duì)于定

20、義好了的函數(shù),在命令窗口或其他文件中均可調(diào)用。 調(diào)用函數(shù)時(shí),參數(shù)可以是常量、有確定值的變量或表達(dá)式。,4.5.3 函數(shù)文件遞歸函數(shù),例4.3 function output=fact(n) %fact函數(shù)通過遞歸函數(shù)求解n! if n=1 %判斷語句,遞歸結(jié)束條件 output=1; return; end output=n*fact(n-1); 在寫一個(gè)遞歸函數(shù)時(shí),一定要包含結(jié)束條件,否則函數(shù)將 一直調(diào)用自身,直到內(nèi)存被耗盡為止。本例中n=1即為結(jié) 束條件。,4.6 變量和常量變量,在Matlab中,變量分為局部變量和全局變量。變量名由一 個(gè)字母開頭,后面可以跟字母、數(shù)字、下劃線等。在Mat

21、lab 中,變量區(qū)分大小寫。在M文件中,變量在使用前無需定義 維數(shù)和每維的大小,但把一個(gè)變量賦給另一個(gè)變量時(shí),要求 賦值號(hào)右邊的變量有值。 在M文件中定義的變量是局部變量,其作用域僅在本函數(shù), 僅能被本函數(shù)調(diào)用。全局變量定義后,能被其他函數(shù)調(diào)用, 在命令窗口也可以調(diào)用。因此,可以在命令窗口或任意一個(gè) 函數(shù)中改變?nèi)肿兞康闹?。全局變量用global定義。如定義 全局變量a,b:global a b。,4.6 變量和常量常量,Matlab為特定的常數(shù)預(yù)留了一些名稱,這些常量也可以重 新賦值。常量在工作空間不能直接看到,使用者可直接調(diào)用。,4.7 程序流程控制語句,4.7.1 賦值語句結(jié)構(gòu) 1) 直

22、接賦值語句 基本格式為: 變量名=賦值表達(dá)式 上述語句把賦值表達(dá)式的值賦給變量。如果表達(dá)式后沒有 分號(hào),則在Matlab命令窗口顯示運(yùn)行結(jié)果,否則不顯示。 例4.5 x=1; y=x y = 1,4.7.1 2)函數(shù)調(diào)用賦值,函數(shù)調(diào)用賦值語句的基本格式為: 返回變量列表=函數(shù)名(輸入變量列表) 返回變量列表和輸入變量列表一般由多個(gè)變量 組成,各變量之間用逗號(hào)隔開。 例4.6 x=rand(3,4); rn,cn=size(x) rn = 3 cn = 4,4.7.2 循環(huán)語句結(jié)構(gòu),Matlab里的循環(huán)結(jié)構(gòu)可用forend語句和whileend語句來實(shí)現(xiàn)。 1)forend語句 for語句使用很

23、靈活,通常用于循環(huán)次數(shù)確定的情況。其調(diào)用格式為: for 變量名=表達(dá)式 循環(huán)體語句組 end 其中,表達(dá)式一般是以“s1:s2:s3”的形式給出。s1表示循環(huán)變量的初始值, s2表示步長(zhǎng)(若步長(zhǎng)為1 ,s2可省略)。對(duì)于正的步長(zhǎng),當(dāng)變量的值大于s3 時(shí)結(jié)束循環(huán);對(duì)于負(fù)的步長(zhǎng),當(dāng)變量的值小于s3時(shí)結(jié)束循環(huán)。 注意for循環(huán)不能用重新賦值循環(huán)變量的方法來終止循環(huán)。,4.7.2 循環(huán)語句結(jié)構(gòu)whileend語句,while語句一般用于事先不能確定循環(huán)次數(shù)的情況。while 語句的基本形式為: while 條件表達(dá)式 循環(huán)體語句組 end 例4.8 接受用戶鍵盤輸入,直到輸入字符串時(shí)程序結(jié)束。 x=

24、input(輸入一個(gè)字符串:); %接受用戶鍵盤輸入 while isstr(x) %存入變量x x=input(輸入一個(gè)字符串:); end,4.7.3 條件語句結(jié)構(gòu),Matlab提供的條件語句有: (1)ifend語句。其基本格式為: if 條件表達(dá)式 條件語句組 end 例4.9 if rand0.5 disp(產(chǎn)生的隨機(jī)數(shù)大于0.5); end,(2)if else end語句。其基本格式為: if 條件表達(dá)式 條件塊語句組1 else 條件塊語句組2 end 例4.10 function out=piecefun(x) %定義分段函數(shù) if x=1 end end,4.7.3 開關(guān)語

25、句結(jié)構(gòu),其基本格式為: switch 開關(guān)表達(dá)式 %標(biāo)量或字符串 case 表達(dá)式1 語句組1 case 表達(dá)式1,表達(dá)式2,表達(dá)式k 語句組2,表達(dá)式2,表達(dá)式k otherwise 語句組n end,4.8 Matlab語言編程技巧,(1)測(cè)試程序執(zhí)行時(shí)間 建立程序執(zhí)行時(shí)間有兩種方法:一種是使用tic和toc命令,tic用于啟動(dòng) 秒表,toc用于停止秒表;另一種是使用能夠獲取CPU時(shí)間的cputime命 令。 例4.12 建立一個(gè)1000*1000的魔方矩陣,使用tic和toc命令。 tic %開始計(jì)時(shí) A=magic(1000); %運(yùn)行程序 toc %結(jié)束計(jì)時(shí),并顯示所耗時(shí)間 Elap

26、sed time is 0.812000 seconds. t=cputime; %把cpu時(shí)間賦給變量t A=magic(1000); cputime-t %顯示前后時(shí)間之差,即執(zhí)行程序所耗時(shí)間 ans= 0.7031,4.8(2)加快Matlab程序執(zhí)行的方法,1)避免使用循環(huán) Matlab的不足是當(dāng)對(duì)矩陣的單個(gè)元素進(jìn)行循環(huán)操作時(shí)運(yùn)算速度很慢, 因此應(yīng)盡量避免使用循環(huán)。編程時(shí),盡量對(duì)矩陣或向量編程,把循環(huán)向 量化,這樣不僅能縮短程序長(zhǎng)度,而且能提高程序執(zhí)行效率。 在必須使用多重循環(huán)的情況下,若兩個(gè)循環(huán)執(zhí)行的次數(shù)不同,則應(yīng)在 循環(huán)的內(nèi)層執(zhí)行次數(shù)多的,外層執(zhí)行循環(huán)次數(shù)少的。 2)對(duì)大型矩陣預(yù)先

27、定義維數(shù) 在程序執(zhí)行的過程中,有時(shí)要?jiǎng)討B(tài)改變矩陣的維數(shù),非常浪費(fèi)時(shí)間。 為此,應(yīng)在定義大矩陣時(shí),首先用Matlab的內(nèi)在函數(shù)(如zeros()或ones() 對(duì)矩陣定義好維數(shù),然后再進(jìn)行賦值處理,這樣會(huì)提高程序的運(yùn)行效率。 3)優(yōu)先使用內(nèi)在函數(shù)。,例4.13 tic sum=0; for i=1:100000 sum=sum+1/i2; end toc Elapsed time is 0.454000 seconds. 向量化編程: tic i=1:100000; s=sum(ones(size(i)./i.2); toc Elapsed time is 0.016000 seconds.,5

28、. 符號(hào)計(jì)算和符號(hào)微積分,與Wolfram公司(數(shù)學(xué)軟件Mathematica的開發(fā)公司)相比, MathWorks公司一直以矩陣計(jì)算和強(qiáng)大的數(shù)據(jù)處理能力見 長(zhǎng),而符號(hào)計(jì)算并不是其強(qiáng)項(xiàng)。直到1993年,MathWorks公 司從加拿大的Waterloo Maple公司購(gòu)買了Maple軟件的內(nèi)核 技術(shù),開發(fā)了用以進(jìn)行符號(hào)計(jì)算的基本符號(hào)運(yùn)算工具箱和擴(kuò) 展符號(hào)運(yùn)算工具箱,從而解決了Matlab在符號(hào)計(jì)算方面的缺 陷?;痉?hào)運(yùn)算工具箱含有100多個(gè)Matlab函數(shù),通過這 些函數(shù)可以采用Matlab的語法來調(diào)用Maple內(nèi)核.Matlab 7.0 的符號(hào)運(yùn)算工具箱,包括符號(hào)函數(shù)、符號(hào)方程的定義、運(yùn)算

29、、 復(fù)合、化簡(jiǎn),符號(hào)矩陣的計(jì)算,符號(hào)微分、積分,符號(hào)代數(shù) 方程和符號(hào)微分方程的求解,符號(hào)積分變換和符號(hào)特殊函數(shù).,5.1 符號(hào)表達(dá)式的定義,Matlab 7.0系統(tǒng)有默認(rèn)的符號(hào)自變量,系統(tǒng)默認(rèn)的自變量 主要有x、x1、y、y1、z、v、u、t、theta、alpha。當(dāng)這些 變量中的某一個(gè)與其它變量組成符號(hào)數(shù)學(xué)表達(dá)式時(shí),這些變 量即為默認(rèn)的自變量;當(dāng)這些變量中的某幾個(gè)組成符號(hào)數(shù)學(xué) 表達(dá)式時(shí),默認(rèn)自變量的順序是: xx1yy1zvutthetaalpha 例如,數(shù)學(xué)表達(dá)式sin(3*t*theta),默認(rèn)的自變量為t。 例5.1:定義x、y、z、s、t五個(gè)符號(hào)變量,使用syms命令操 作為: s

30、yms x y z s t %定義單個(gè)符號(hào)變量也可x=sym(x),符號(hào)表達(dá)式定義(續(xù)),例5.2 用單引號(hào)定義符號(hào)表達(dá)式。 fun=a0*x3+a1*x2+a2*x+a3=0 %定義符號(hào)代數(shù)方程 fun = a0*x3+a1*x2+a2*x+a3=0 fun=3*D2y-2*Dy+y=0 %定義符號(hào)微分方程 fun = 3*D2y-2*Dy+y=0 fun=atan(x) %定義符號(hào)函數(shù) fun= atan(x),5.2 符號(hào)矩陣計(jì)算,在Matlab 7.0中,符號(hào)矩陣的運(yùn)算與數(shù)值矩陣相同。 例5.3 定義符號(hào)矩陣,進(jìn)行各種符號(hào)運(yùn)算。 syms a b c d e f g h A=a b;

31、c d; %定義符號(hào)矩陣A B=e f; g h; %定義符號(hào)矩陣B A+B ans= a+e, b+f c+g, d+h A*B ans= a*e+b*g, a*f+b*h c*e+d*g, c*f+d*h,5.3 符號(hào)表達(dá)式運(yùn)算,符號(hào)表達(dá)式的基本運(yùn)算有合并同類項(xiàng)、表達(dá)式展開、因式 分解、提取符號(hào)表達(dá)式的分子和分母、符號(hào)表達(dá)式的化簡(jiǎn)、 確定符號(hào)矩陣的維數(shù)。有關(guān)函數(shù)的調(diào)用格式和功能見下表。 collect(s):按默認(rèn)變量x的次數(shù)對(duì)符號(hào)多項(xiàng)式s合并同類項(xiàng) collect(s,v):按指定變量v的次數(shù)對(duì)符號(hào)多項(xiàng)式s合并同類項(xiàng) expand(s):將符號(hào)多項(xiàng)式s展開 factor(x):將符號(hào)表達(dá)

32、式x因式分解 N,D=numden(A):求符號(hào)表達(dá)式A的分子N和分母D simplify(s):求表達(dá)式s的化簡(jiǎn)形式 m,n=size(A):求符號(hào)矩陣A的行數(shù)m、列數(shù)n,5.4 符號(hào)函數(shù)的極限,limit(F,x,a) :計(jì)算當(dāng)xa時(shí)符號(hào)函數(shù)表達(dá)式F的極限值 例5.4: syms x limit(tan(x)-x)/x3) %求自變量x趨近于0時(shí)的極限值 ans= 1/3 limit(x2-1)/(x-1),x,1) %求自變量x趨近于1時(shí)的極限值 ans= 2,5.5 符號(hào)函數(shù)的導(dǎo)數(shù),diff(s) %計(jì)算符號(hào)表達(dá)式s對(duì)系統(tǒng)默認(rèn)自變量的一階導(dǎo)數(shù) diff(s,n) %計(jì)算符號(hào)表達(dá)式s對(duì)系

33、統(tǒng)默認(rèn)自變量的n階導(dǎo)數(shù) diff(s,v,n)%計(jì)算符號(hào)表達(dá)式s對(duì)指定變量v的n階導(dǎo)數(shù) 例5.5: syms x y=log(log(x); diff(y) %求函數(shù)y對(duì)自變量x的一階導(dǎo)數(shù) ans = 1/x/log(x) pretty(ans) %求符號(hào)表達(dá)式的常規(guī)形式 1 - x log(x),5.6 符號(hào)函數(shù)的積分,int(s):對(duì)符號(hào)表達(dá)式s中的默認(rèn)自變量求s的不定積分 int(s,v):對(duì)符號(hào)表達(dá)式s中的指定變量v求s的不定積分 int(s,v,a,b):對(duì)符號(hào)表達(dá)式s中的指定變量v在區(qū)間a,b上求s的 定積分 例5.6: syms x int(1/x4/sqrt(1+x2) %對(duì)默

34、認(rèn)自變量x求不定積分 ans= -1/3/x3*(1+x2)(1/2)+2/3/x*(1+x2)(1/2) int(1/(1+4*x2),-inf,inf) %在區(qū)間-,+ 上求定積分 ans= 1/2*pi,5.7 代數(shù)方程組的符號(hào)解,Matlab 7.0中求代數(shù)方程的符號(hào)解是通過調(diào)用solve函數(shù)實(shí) 現(xiàn)的。調(diào)用格式一般為: solve(代數(shù)方程,未知變量)或x=solve(代數(shù)方程,未知變 量) 例5.7:求方程組 的解。 syms x y x,y=solve(x-2*y-4,x2-2*x*y+y) x= 4/9 y= -16/9,5.8 常微分方程組求解,在Matlab中,用dsolve

35、函數(shù)求解微分方程或微分方程組, dsolve函數(shù)的輸入共有三部分,微分方程、初始條件和自變 量。調(diào)用格式為: dsolve(微分方程,初始條件,自變量) 微分或?qū)?shù)的輸入用Dy,D2y,D3y,來表示一階導(dǎo) 數(shù),二階導(dǎo)數(shù),三階導(dǎo)數(shù)。如果自變量是系統(tǒng)默認(rèn)的,則 自變量輸入部分可省略。dsolve函數(shù)的輸出部分是該方程(組) 的解列表,如果dsolve函數(shù)找不到解析解,則系統(tǒng)顯示錯(cuò)誤 信息。,5.9 常微分方程組求解例題,例5.8:求解微分方程組 在無初始條件和 有初始條件 時(shí)的解。 x,y=dsolve(3*x+D2x+Dy=sin(3*t),4*Dx+D2y+3*y=cos(3*t),t) x

36、= -1/24*sin(3*t)+C1*exp(t)*cos(2(1/2)*t)+C2*exp(t)*sin(2(1/2)*t)+C3*exp(-t)*sin(2(1/2)*t)+C4*exp(-t)*cos(2(1/2)*t) y= -1/4*cos(3*t)-2*C1*exp(t)*cos(2(1/2)*t)-2*C2*exp(t)*sin(2(1/2)*t)+2*C3*exp(-t)*sin(2(1/2)*t)+2*C4*exp(-t)*cos(2(1/2)*t) x,y=dsolve(3*x+D2x+Dy=sin(3*t),4*Dx+D2y+3*y=cos(3*t),. Dx(0)=1

37、/2,x(0)=0,Dy(0)=2/3,y(0)=1,t),6. Matlab科學(xué)繪圖,主要內(nèi)容 圖形窗口 二維平面繪圖 空間三維繪圖 特殊三維繪圖函數(shù) Matlab在數(shù)據(jù)可視化方面也有很好的表現(xiàn),具有強(qiáng)大的 圖形繪制能力。Matlab可以繪制二維、三維乃至四維圖形, 而且能對(duì)圖形進(jìn)行線型、里面、色彩、渲染、光線、視角等 控制。用戶只須指定繪圖方式,并提供充足的繪圖數(shù)據(jù),即 可得出所需的圖形。,6.1 圖形窗口,在Matlab中,圖像窗口和命令窗口是獨(dú)立的窗口。當(dāng)圖 形窗口處于關(guān)閉狀態(tài)時(shí),圖形命令將新建一個(gè)窗口;如果已 經(jīng)打開了一個(gè)或多個(gè)圖形窗口,一般默認(rèn)最后一個(gè)打開的窗 口作為當(dāng)前圖形命令的

38、輸出窗口。 例6.1 t=0:pi/50:2*pi; x=sin(t); plot(t,x),6.2 二維平面繪圖,plot是基本的二維繪圖命令,Matlab的其他二維函數(shù)中的絕大多數(shù)是 以plot為基礎(chǔ)構(gòu)造的。函數(shù)plot最直接的調(diào)用格式為: plot(x,y) 曲線實(shí)際上是由一系列的的點(diǎn)構(gòu)成。首先定義了橫坐標(biāo)x向量,然后 定義縱坐標(biāo)y向量,通過plot函數(shù)作出圖形。若要畫出多條曲線,只須將 坐標(biāo)對(duì)依次放入plot函數(shù)即可。 例6.2 在同一個(gè)窗口繪制y=sinx,y=cosx在0,2*pi的圖像。 x=linspace(0,2*pi,101); plot(x,sin(x),x,cos(x)

39、 %坐標(biāo)對(duì)依次放入plot函數(shù)中 也可以在Matlab窗口輸入下列命令: x=linspace(0,2*pi,101); plot(x,sin(x);cos(x) 程序運(yùn)行結(jié)果如圖。,plot函數(shù)繪圖命令的選項(xiàng),不同種類的選項(xiàng)間可以搭配使 用,如選項(xiàng)”ro”表示繪制紅色的 圓劃線。帶選項(xiàng)的曲線繪制命 令的基本格式為: plot(x1,y1,選項(xiàng)1,x2,y2,選項(xiàng)2,) 例如: plot(x1,y1,b*,x2,y2,x3,y3,g+),例6.3 x=0:pi/100:2*pi; plot(x,sin(x),ko,x,cos(x),*),二維圖形的標(biāo)注方法,1)坐標(biāo)軸的調(diào)整 Matlab可以根

40、據(jù)所繪制曲線的范圍自動(dòng)選擇適當(dāng)?shù)淖鴺?biāo)系, 使得曲線能夠盡可能清晰地顯示出來。所以,一般情況下不 需要考慮坐標(biāo)范圍的選擇。但有特殊的要求時(shí),可以手動(dòng)地 改變坐標(biāo)系的范圍。手動(dòng)調(diào)整只須借助axis函數(shù),其基本格 式為: axis(xmin,xmax,ymin,ymax) 例6.4 調(diào)整坐標(biāo)軸顯示的范圍。 x=0:pi/100:2*pi; axis(0,6.3,-1.1,1.1); plot(x,sin(x),ko,x,cos(x),*),2) 坐標(biāo)標(biāo)注、圖形標(biāo)題和注解,Matlab可以用函數(shù)xlabel和ylabel分別為x軸和y軸加上注解和 說明,其中ylabel函數(shù)會(huì)自動(dòng)旋轉(zhuǎn)90o顯示。tit

41、le和legend函數(shù)分別 為圖形添加標(biāo)題和注解。grid on和grid off命令分別表示開啟和關(guān) 閉網(wǎng)格線的顯示。 圖形上點(diǎn)的標(biāo)注和說明用text命令實(shí)現(xiàn)。text函數(shù)的基本格式為: text(x,y,字符串,屬性名,值) 其中,(x,y)是標(biāo)注的位置,字符串是要說明的內(nèi)容,leftarrow和pi 分別表示左箭頭和常量 。 例6.5 x=0:pi/100:2*pi; axis(0,6.3,-1.1,1.1); plot(x,sin(x),k,x,cos(x); xlabel(x); ylabel(y); %x軸、y軸注解 title(一個(gè)周期內(nèi)的正弦、余弦函數(shù)圖像); %圖形標(biāo)題 le

42、gend(y=sin(x),y=cosx); %圖形注解,在右上角顯示 grid on %顯示網(wǎng)格線 text(pi/5,sin(pi/5),(pi/5,sin(pi/5),fontsize,16); text(pi/5,cos(pi/5),(pi/5,cos(pi/5),fontname,楷體);,圖形的標(biāo)注和說明,可通過圖形窗口的Insert菜單下的各子菜單(如X label、Y label、 Z label、Title等)交互設(shè)置。,圖形窗口的分割和多個(gè)對(duì)象的顯示,在前面的例子,使用plot命令可以在同一窗口中顯示多條 曲線。除此之外,還有其他一些方法實(shí)現(xiàn)多個(gè)圖形的顯示。 (1)使用ho

43、ld函數(shù) hold on %增加圖形。后續(xù)圖形增加到現(xiàn)有圖形中 hold off %替換圖形。默認(rèn)值。替換現(xiàn)有圖形 hold %在增加圖形和替換圖形之間切換 (2)分割圖形窗口 subplot(m,n,p) %把圖形劃分成m*n個(gè)矩陣塊,當(dāng)前選擇第K %個(gè)矩陣塊。子塊排序以行優(yōu)先 例6.6,例6.6 在四個(gè)子窗口,做出0,2*pi區(qū)間的正弦、余弦、余切 函數(shù)曲線。其中第3、4子窗口作余切函數(shù)曲線。 x=0:pi/100:2*pi; subplot(2,2,1),plot(x,sin(x),title(sinx), subplot(2,2,2),plot(x,cos(x),k),title(co

44、sx), subplot(2,2,3 4),axis(plot(x,tan(x),g),title(tanx),二維繪圖函數(shù),例6.7 繪制函數(shù)sin(1/x)在x=0附近的變化情況。 fplot(sin(1/x),0.02 0.2); 例6.8 作心形線 。 t=0:pi/360:2*pi; polar(t,1+cos(t),r.) 或 ezpolar(1+cos(t),0,2*pi);,%fplot函數(shù)會(huì)對(duì)函數(shù)劇烈變化處進(jìn) %行較密集的取樣,從而進(jìn)行較精 %確的繪圖。,餅圖 pie(x) %把x中的數(shù)據(jù)按照所占總量sum(x)的比例畫成餅圖 pie(x,explode) %explode為

45、與x同大小的向量,若分量非0 , % 則對(duì)應(yīng)切片從餅圖的中心分離。 例6.9 score=5 15 10 7 2;%某班成績(jī)分布 explode=0 1 1 1 0;%各分?jǐn)?shù)段切片是否分離顯示 pie(score,explode,90-100,80-89,70-79,60-69,60) %,與x同大小的細(xì)胞字符串,依次作為各切片的標(biāo)簽,6.3 繪制三維曲線,plot3命令繪制三維曲線。函數(shù)調(diào)用格式為: plot3(x,y,z,選項(xiàng)) 其中,x,y,z分別表示曲線的3個(gè)坐標(biāo)向量,這里要求它們 的維數(shù)相同,選項(xiàng)與函數(shù)plot一致。 例6.10 畫出螺旋線。 t=-5:5; x=2*cos(3*t)

46、; y=2*sin(3*t); z=4*t; plot3(x,y,z),6.4 繪制曲面網(wǎng)線圖,用mesh函數(shù)生成曲面網(wǎng)線圖,函數(shù)的調(diào)用格式為: mesh(X,Y,Z,C) 此函數(shù)由3個(gè)矩陣X,Y,Z繪制空間網(wǎng)線圖,即以矩陣元素 為空間坐標(biāo)在空間描點(diǎn)作圖,點(diǎn)與點(diǎn)之間用線段連接。C為顏色矩陣, 表示在不同高度下的顏色范圍。如果省略C選項(xiàng),則自動(dòng)假定C=Z, 亦即顏色的設(shè)定是正比于高度的,這樣得到的三維圖形層次比較清 楚。 在使用mesh函數(shù)時(shí),一般都要調(diào)用meshgrid函數(shù)生成網(wǎng)線節(jié)點(diǎn) 矩陣,其基本調(diào)用格式為: X,Y=meshgrid(x,y) 其中,x和y都是向量,X和Y都是矩陣,X的每行

47、都是由向量x構(gòu)成, Y的每列則由向量y構(gòu)成。xy平面就按照X和Y矩陣分割成小矩形單元。,例 用meshgrid產(chǎn)生網(wǎng)格。 x,y=meshgrid(0:3,0:3) x= 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 y = 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 例6.11 作出橢圓拋物面 。 x,y=meshgrid(-2:0.1:2,-3:0.1:3);%生成xy平面的網(wǎng)格 z=x.2/4+y.2/9; %計(jì)算網(wǎng)格坐標(biāo)的高度 mesh(x,y,z) %生成曲面網(wǎng)格圖 colorbar %高度的彩色條,三維表面圖,當(dāng)要繪制表面圖時(shí),可以使用surf

48、函數(shù),其調(diào)用格式為: surf(X,Y,Z,C) 各變量的含義與mesh函數(shù)類似。 例6.12 繪制馬鞍面。 x,y=meshgrid(-2:0.1:2,-3:0.1:3);%生成xy平面的網(wǎng)格 z=x.2/4-y.2/9; %計(jì)算網(wǎng)格坐標(biāo)的高度 surf(x,y,z) %生成曲面網(wǎng)格圖 shading interp %網(wǎng)格塊內(nèi)采用顏色插值處理,使表面顯得更光滑,7 Matlab在數(shù)值分析、優(yōu)化中的應(yīng)用,在科學(xué)研究和工程應(yīng)用中,往往要進(jìn)行大量的數(shù)學(xué)計(jì)算。 Matlab的數(shù)值分析功能十分強(qiáng)大,本節(jié)主要講述Matlab在 函數(shù)、插值和曲線擬合分析、微積分和線性方程系統(tǒng)方面 的應(yīng)用。 7.1 Mat

49、lab中的多項(xiàng)式 1)定義多項(xiàng)式 。 p=1 0 -12 0 12 7; %系數(shù)按降序排列,缺項(xiàng)補(bǔ)0 r=roots(p) r = -3.3330 3.2673 1.2985 -0.6164 + 0.3392i -0.6164 - 0.3392i p=poly(r) %根據(jù)多項(xiàng)式的根,構(gòu)造多項(xiàng)式,2) 多項(xiàng)式的加、減、乘、除運(yùn)算,多項(xiàng)式的加減乘除與向量的加減乘除相似,Matlab沒提供專 門的運(yùn)算。對(duì)于兩個(gè)不同階的多項(xiàng)式相加減,只需用0填補(bǔ)低階 多項(xiàng)式相應(yīng)的高階,變成同階的再做運(yùn)算。 例7.1 多項(xiàng)式 與 的和、差、積、商。 p1=1 0 0 0 -1;p2=1 0 2 5; %定義兩個(gè)多項(xiàng)式

50、 p2=0 p2; %擴(kuò)展低次多項(xiàng)式,成為與p同階多項(xiàng)式 s=p1+p2 %多項(xiàng)式加法 s=1 1 0 2 4 p2(1)=; %多項(xiàng)式乘法對(duì)同階無要求 m=conv(p1,p2) %多項(xiàng)式乘法 m=0 1 0 2 5 -1 0 -2 -5 q,r=deconv(p1,p2) %多項(xiàng)式p1除以p2,q表示商,r表示余數(shù) q=1 0;r=0 0 -2 -5 -1,3) 多項(xiàng)式的導(dǎo)數(shù),Matlab提供函數(shù)polyder計(jì)算多項(xiàng)式及其積、商的導(dǎo)數(shù) 此函數(shù)有如下幾種表達(dá)形式: k=polyder(p); %多項(xiàng)式p的導(dǎo)數(shù) k=polyder(a,b); %多項(xiàng)式a與b的積的導(dǎo)數(shù) q,d=polyder(a,b); %返回多項(xiàng)式a與b的商的導(dǎo)數(shù),q %表示導(dǎo)數(shù)的分子部分,d表示導(dǎo) %數(shù)的分母部分 4)多項(xiàng)式的求值 例7.2 求多項(xiàng)式 在點(diǎn)x=1,3,5處的值。 p=1 3 1; %定義多項(xiàng)式 polyval(p,1 3 5) ans= 5 19 41,6.2 求函數(shù)的零點(diǎn),Matlab提供函數(shù)fzero求函數(shù)的零點(diǎn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論