




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1,本章內(nèi)容 (1) MATLAB的基本數(shù)學(xué)函數(shù)和常用命令的使用; (2) MATLAB的m文件的建立與使用; (3) MATLAB的矩陣元素的輸入及特殊矩陣的實現(xiàn); (4) MATLAB的矩陣運算和向量運算; (5) MATLAB的外部命令調(diào)用方法; (6) MATLAB的基本輸入/輸出函數(shù)及其應(yīng)用; (7) MATLAB的關(guān)系運算和邏輯運算; (8) MATLAB的條件轉(zhuǎn)移語句、循環(huán)語句等常用控制語句的使用; (9) MATLAB的基本繪圖、字符添加、圖形控制和圖形修飾命令。,第一章 仿真軟件MATLAB,2,1.1 MATLAB簡介 1.1.1 概述,在科學(xué)研究和工程應(yīng)用中,為了克服一般
2、語言對大量的數(shù)學(xué)運算,尤其當(dāng)涉及矩陣運算時,編程難、調(diào)試麻煩等困難,美國MATLAB軟件開發(fā)公司于1967年構(gòu)思并開發(fā)了MATLAB(MATRIX LABoratory,即矩陣實驗室),經(jīng)過不斷更新和擴充,該公司于1992年推出了具有劃時代意義的MATLAB4.0版本,并于1993年推出了其微機版,到2004年為止先后推出了MATLAB4.X、5.X和6.X版,使之應(yīng)用范圍越來越廣。,3,用MATLAB編程運算與人進行科學(xué)計算的思路和表達方式完全一致,所以使用MATLAB進行數(shù)學(xué)運算就象在草稿紙上演算數(shù)學(xué)題一樣方便。 萬能的、科學(xué)的數(shù)學(xué)運算“演算紙” 萬能的計算器,4,MATLAB大大降低了對
3、使用者的數(shù)學(xué)基礎(chǔ)和計算機語言知識的要求,既使用戶不懂C或FORTRAN這樣的程序設(shè)計語言,也可使用MATLAB輕易的再現(xiàn)C或FORTRAN語言幾乎全部的功能 ,設(shè)計出功能強大、界面優(yōu)美、穩(wěn)定可靠的高質(zhì)量程序來,而且編程效率和計算效率極高。,5,盡管MATLAB開始并不是為控制理論與系統(tǒng)的設(shè)計者們編寫的,但以它“語言”化的數(shù)值計算、強大的矩陣處理及繪圖功能 、靈活的可擴充性和產(chǎn)業(yè)化的開發(fā)思路很快就為自動控制界研究人員所矚目。目前,在自動控制、圖像處理、語言處理、信號分析、振動理論、優(yōu)化設(shè)計、時序分析和系統(tǒng)建模等領(lǐng)域。,6,由著名專家與學(xué)者以MATLAB為基礎(chǔ)開發(fā)的實用工具箱極大地豐富了MATLA
4、B的內(nèi)容,較為常見的MATLAB工具箱主要有:,)通訊工具箱(Communications Toolbox); )控制系統(tǒng)工具箱(Control Systems Toolbox); )數(shù)據(jù)獲得工具箱(Data Acquisition Toolbox); )數(shù)據(jù)庫工具箱(Database Toolbox); )濾波器設(shè)計工具箱(Filter Design Toolbox); )模糊邏輯工具箱(Fuzzy Logic Toolbox); )圖象處理工具箱(Image Processing Toolbox);,7,)映射工具箱(Mapping Toolbox); )神經(jīng)網(wǎng)絡(luò)工具箱(Neural Ne
5、twork Toolbox); )優(yōu)化工具箱(Optimization Toolbox); )魯棒控制工具箱(Robus Control Toolbox); )信號處理工具箱(Signal Processing Toolbox); )統(tǒng)計學(xué)工具箱(Statistics Toolbox); )系統(tǒng)辨識工具箱(System Identification Toolbox); )小波分析工具箱(Wavelet Toolbox)。,8,模型輸入與仿真環(huán)境Simulink更使MATLAB為控制系統(tǒng)的仿真與CAD中的應(yīng)用打開了嶄新的局面,并使得MATLAB目前已經(jīng)成為國際上最流行的控制系統(tǒng)計算機輔助設(shè)計的軟
6、件工具。 MATLAB不僅流行于控制界,在生物醫(yī)學(xué)工程、語言處理、圖像信號處理、雷達工程、信號分析、計算機技術(shù)等各行各業(yè)中都有極廣泛的應(yīng)用。,9,嚴格地說,MATLAB并不是一種計算機語言,它僅僅是一種高級的科學(xué)分析與計算軟件。因為,用它編寫出來的程序并不能脫離MATLAB環(huán)境而執(zhí)行,但從其功能上講,MATLAB已經(jīng)完全具備了計算機語言的結(jié)構(gòu)與性能,所以我們這里將其簡稱為“MATLAB語言”。本書以目前的最新版本MATLAB6.1為基礎(chǔ)來進行敘述。,10,1.1.2 MATLAB命令窗口,11,MATLAB啟動后將出現(xiàn)如圖1-1所示的命令窗口。 在MATLAB命令窗口中的“”標志為MATLAB
7、的命令提示符,“|”標志為輸入字符提示符。 如果用戶是第一次使用MATLAB,則建議首先在命令行中鍵入demo命令,它將啟動MATLAB的演示程序,用戶可以在這些演示程序中領(lǐng)略到MATLAB所提供的強大的運算和繪圖功能。,12,1.2 MATLAB的基本操作,1.2.1 MATLAB語言的結(jié)構(gòu),13,MATLAB命令窗口就是 MATLAB語言的工作空間,因為MATLAB的各種功能的執(zhí)行必須在此窗口下才能實現(xiàn),在這種環(huán)境下輸入的MATLAB語句稱為“窗口命令”。 所謂窗口命令,就是在上述環(huán)境下輸入的MATLAB語句,并直接執(zhí)行它們完成相應(yīng)的運算、繪圖等。 MATLAB語句的一般形式為 變量名表達
8、式,14,其中 等號右邊的表達式可由操作符或其它字符、函數(shù)和變量名組成,它可以是MATLAB允許的數(shù)學(xué)或矩陣運算,也可以包含MATLAB下的函數(shù)調(diào)用;等號左邊的變量名為MATLAB語句右邊表達式的返回值語句所賦值的變量的名字。 在調(diào)用函數(shù)時,MATLAB允許一次返回多個結(jié)果,這時等號左邊的變量名需用 括起來,且各個變量名之間用逗號分隔開,如果左邊的變量名缺省時返回值自動賦給ans。,15,表1-1 MATLAB中的算術(shù)運算符,MATLAB中使用的算術(shù)運算符如表1-1所示。對于矩陣來說,這里左除和右除表示兩種不同的除數(shù)矩陣和被除數(shù)矩陣的關(guān)系。對于標量,兩種除法運算的結(jié)果相同,如1/4和41有相同
9、的值0.25。常用的十進制符號如小數(shù)點、負號等,在MATLAB中也可以同樣使用,表示10的冪次要用符號e或E,如:3、-99、0.0001、1.6e-20、6.2e23。,16,在MATLAB中變量名必須以字母開頭,之后可以是任意字母、數(shù)字或者下劃線(不能超過19個字符),但變量中不能含有標點符號。變量名區(qū)分字母的大小寫,同一名字的大寫與小寫被視為兩個不同的變量。一般說來,在MATLAB下變量名可以為任意字符串,但MATLAB保留了一些特殊的字符串如表1-2所示。,17,表1-2 MATLAB中的特殊變量,表1-2 MATLAB中的特殊變量,18,MATLAB命令語句能即時執(zhí)行,它不是輸入完全
10、部MATLAB命令語句經(jīng)過編譯、連接形成可執(zhí)行文件后才開始執(zhí)行,而是每輸入完一條命令,MATLAB就立即對其處理,并得出中間結(jié)果,完成了MATLAB所有命令語句的輸入,也就完成了它的執(zhí)行,直接便可得到最終結(jié)果。從這一點來說,MATLAB清晰地體現(xiàn)了類似“演算紙”的功能。例如 a=5; b=6; c=a*b,結(jié)果顯示 C= 30,19,MATLAB語句既可由分號結(jié)束,也可由逗號或換行號結(jié)束,但它們的含義是不同的。如果用分號 “;”結(jié)束,則說明除了這一條命令外還有下一條命令等待輸入,MATLAB這時將不立即顯示運行的中間結(jié)果,而等待下一條命令的輸入,如以上前兩條命令;如果以逗號 “,”或回車結(jié)束,
11、則將把左邊返回的內(nèi)容全部顯示出來,如以上后兩條命令。 當(dāng)然在任何時候也可輸入相應(yīng)的變量名來查看其內(nèi)容。如,20,在MATLAB中,幾條語句也可以出現(xiàn)在同一行中,只要用分號或逗號將它們分割。例如 a=5;b=6;c=a*b,d=c+2 這時可得與上面相同的結(jié)果。,21,MATLAB工作空間中的變量在退出MATLAB時會丟失,如果在退出MATLAB前想將工作空間中的變量保存到文件中,則可以調(diào)用save命令來完成,該命令的調(diào)用格式為 save 文件名 變量列表 其它選項 注意 這一命令中不能使用逗號,不同的元素之間只能用空格來分隔。,22,例如,想把工作空間中的a,b,c變量存到mydat.mat文
12、件中去,則可用下面的命令來實現(xiàn)。 save mydat a b c 這里將自動地使用文件擴展名mat。如果想將整個工作空間中所有的變量全部存入該文件,則應(yīng)采用下面的命令。 save mydat,23,當(dāng)然這里的mydat也可省略,這時將工作空間中的所有變量自動地存入到文件matlab.mat中了。應(yīng)該指出的是,這樣存儲的文件均是按照二進制的形式進行的,所以得出的文件往往是不可讀的,如果想按照ASCII碼的格式來存儲數(shù)據(jù),則可以在命令后面加上一個控制參數(shù)-ascii,該選項將變量以單精度的ASCII碼形式存入文件中去,如果想獲得高精度的數(shù)據(jù)。則可使用控制參數(shù):-ascii -double。,24
13、,MATLAB提供的load命令可以從文件中把變量調(diào)出并重新裝入到MATLAB的工作空間中去,該函數(shù)的調(diào)用格式與save命令同。 當(dāng)然工作空間中變量的保存和調(diào)出也可利用菜單項中的File|Save Workspace As 和File|Open命令來完成。,25,如果想查看目前的工作空間中都有哪些變量名,則可以使用who命令來完成。例如當(dāng)MATLAB的工作空間中有a , b , c ,d四個變量名時,使用who 命令將得出如下的結(jié)果。 who,your variable are: a b c d 想進一步了解這些變量的具體細節(jié),則可以使用whos命令來查看。,26,了解了當(dāng)前工作空間中的現(xiàn)有變
14、量名之后,則可以使用clear命令來刪除其中一些不再使用的變量名,這樣可使得整個工作空間更簡潔,節(jié)省一部分內(nèi)存,例如想刪除工作空間中的a ,b兩個變量,則可以使用下面的命令 clear a b 如果想刪除整個工作空間中所有的變量,則可以使用以下命令 clear MATLAB可以使用上下光標鍵來前后查看已經(jīng)鍵入的命令。,27,但僅靠一條一條地輸入語句,MATLAB難以實現(xiàn)復(fù)雜功能,為了實現(xiàn)諸如循環(huán)、條件、分支等功能,MATLAB利用了m文件,m文件是由一系列的MATLAB語句組成。,28,MATLAB實際上可以認為是一種解釋性語言,用戶可以在MATLAB工作環(huán)境下一條一條地鍵入命令,也可以直接鍵
15、入用MATLAB的語言編寫的m文件名,或它們結(jié)合起來使用,這樣MATLAB軟件對此命令或m文件中各條命令進行翻譯,然后在MATLAB環(huán)境下對它進行處理,最后返回運算結(jié)果。所以說MATLAB語言的結(jié)構(gòu)可用下式進行描述 MATLAB語言窗口命令m文件,29,1.2.2 MATLAB的磁盤文件,由于MATLAB本身可以被認為是一高效的語言,所以用它可編寫出具有特殊意義的磁盤文件來,這些磁盤文件是由一系列的MATLAB語句組成,它既可能是一系列窗口命令語句,又可以是由各種控制語句和說明語句構(gòu)成的函數(shù)文件。 由于它們都是由ASCII碼構(gòu)成的, 其擴展名均為“.m”,故統(tǒng)稱為m文件。,30,1.文本文件
16、文本文件是一系列的MATLAB語句組成,它類似于DOS下的批處理文件,在MATLAB的提示符下直接鍵入文本文件名,便可自動執(zhí)行文件中的一系列命令,直至給出最終結(jié)果。 文本文件在工作空間中運算的變量為全局變量。,31,例1-1 求函數(shù) 在x= -4時的值。,%myfile.m %This is an M-file for calculates sqrtx+x.3 x1=abs(x) x2=sqrt(x1)+x.3 y=x2 其中 右邊為說明語句,不被MATLAB所執(zhí)行,它可以在命令窗口中用help myfile命令來查看了解該m文件的功能。,32,當(dāng)以上文本文件myfile.m建立后,在MATL
17、AB 命令窗口中輸入命令 x=-4;myfile,x1= 4 x2= -62 y= -62 這里執(zhí)行的中間變量x1,x2都被保存下來,這與下面的函數(shù)文件是不同的。,33,2.函數(shù)文件 函數(shù)文件的功能是建立一個函數(shù),且這個函數(shù)可以同MATLAB的庫函數(shù)一樣使用,它與文本文件不同,在一般情況下不能單獨鍵入函數(shù)文件的文件名來運行一個函數(shù)文件,它必須由其它語句來調(diào)用,函數(shù)文件允許有多個輸入?yún)?shù)和多個輸出參數(shù)值,其基本格式如下 function f1,f2,f3,=fun(x, y, z,) 注釋說明語句 函數(shù)體語句 其中 x, y, z,是形式輸入?yún)?shù);而f1,f2,f3,是返回的形式輸出參數(shù)值;fu
18、n是函數(shù)名。,34,實際上,函數(shù)名一般就是這個函數(shù)文件的磁盤文件名,注釋語句段的內(nèi)容同樣可用help命令顯示出來。 調(diào)用一個函數(shù)文件只需直接使用與這個 函數(shù)一致的格式 y1,y2,y3,=fun(i,j,k,) 其中 i,j,k,是相應(yīng)的實際輸入?yún)?shù),而y1,y2,y3,是相應(yīng)的實際輸出參數(shù)值。,35,例1-2 求函數(shù)在x1= -2, x2= 3, x3= 1時的值,例 函數(shù)文件func.m的內(nèi)容為 function y1, y2=func(x1,x2,x3) %This is an example function. z1=3* x1.2; z2=(x2+ x3); y1=z1+z2; y2
19、=z1-z2;,36,當(dāng)以上函數(shù)文件myfunc.m建立后,在MATLAB命令窗口中輸入以下命令 a1=-2;a2=3;a3=1; b1,b2=func(a1,a2,a3) 則顯示結(jié)果為,b1= 16 b2= 8,37,函數(shù)文件中定義的變量為局部變量,也就是說它只在函數(shù)內(nèi)有效。即在該函數(shù)返回后,這些變量會自動在MATLAB工作空間中清除掉,這與文本文件是不同的,但可通過命令 global 變量 來定義一個全局變量。 函數(shù)文件與文本文件另一個區(qū)別在于其第一行是由function開頭的,且有函數(shù)名和輸入形式參數(shù)與輸出形式參數(shù),若是沒有這一行的磁盤文件就是文本文件 。,38,由于m文件具有普通的文本
20、格式,因而可以用任何編輯程序建立和編輯,但一般最常用、而且最為方便地是使用MATLAB命令窗口的File|New或File|Open菜單項對m文件進行建立和編輯。,39,1.2.3 MATLAB的庫函數(shù) MATLAB提供了豐富的庫函數(shù),庫函數(shù)是根據(jù)系統(tǒng)編制好了的,提供用戶直接使用的函數(shù),MATLAB中常用的基本數(shù)學(xué)函數(shù),如表1-3所示。 除了基本函數(shù)外,不同版本的MATLAB還增加了不同的有專門功能的庫函數(shù),也稱工具箱。例如通訊工具箱、控制系統(tǒng)工具箱和信號處理工具箱等等。 對于各種函數(shù)的功能和調(diào)用方法可使用MATLAB的聯(lián)機幫肋help來查詢,其使用格式為 help 函數(shù)名,40,表1-3 M
21、ATLAB的基本函數(shù),表1-3 MATLAB的基本函數(shù),41,1.2.4 外部程序的調(diào)用,MATLAB允許在其命令窗口中調(diào)用可執(zhí)行文件(.exe),其調(diào)用方法是在MATLAB提示符下鍵入驚嘆號!后面直接跟該可執(zhí)行文件即可。MATLAB也允許采用這樣的方式來直接使用DOS命令,如磁盤復(fù)制命令copy可以由!copy來直接使用,而文件列表命令dir可以由!dir來調(diào)用。事實上,為了使用戶提供更大的方便,MATLAB已經(jīng)把一些常用的DOS命令做成了相應(yīng)的MATLAB命令,表1-4列出了MATLAB中提供的一些文件管理命令。,42,表1-4 文件管理命令,表1-4 文件管理命令,43,1.2.5 輸入
22、與輸出函數(shù),如果用戶想在計算的過程中給計算機輸入一個參數(shù),則可以使用input( )函數(shù)來進行,該函數(shù)的調(diào)用格式為 變量名input(提示信息,選項) 這里提示信息可以為一個字符串顯示,它用來提示用戶輸入什么樣的數(shù)據(jù),input( )函數(shù)的返回值賦給等式左邊的變量名。,44,例如, 用戶想輸入A矩陣,則可以采用下面的命令來完成 A=input(Enter matrix A=); 執(zhí)行該命令時首先給出Enter matrixA=提示信息,然后等待用戶從鍵盤按MATLAB格式輸入矩陣,并把此值賦給A。,45,如果在input( )函數(shù)調(diào)用時采用了s選項,則允許用戶輸入一個字符串,此時需用單引號將所
23、輸字符串括住。 eval( )是與字符變量一起工作的函數(shù),執(zhí)行字符串的宏調(diào)用。也就是eval( )使字符變量中的字符串做為對應(yīng)的MATLAB語句來執(zhí)行。例如 s=dir c: ;eval(s) 其執(zhí)行結(jié)果為顯示出C盤根目錄下的內(nèi)容。它與在命令窗口中直接使用dir c: 的功能的一樣的。,46,MATLAB 提供的命令窗口輸出函數(shù)主要有disp( )函數(shù),其調(diào)用格式為 disp(變量名) 其中變量名既可以為字符串,也可以為變量矩陣。例如 s= Hello World,s= Hello World,disp(s),Hello World,47,MATLAB提供了較實用的字符串處理及轉(zhuǎn)換的函數(shù),例如
24、int2str( )函數(shù)就可以方便在將一個整形數(shù)據(jù)轉(zhuǎn)換成字符串形式,該函數(shù)的調(diào)用格式為 cstr=int2str(n) 其中 n為一個整數(shù),而該函數(shù)將返回一個相關(guān)的字符串cstr。 例如 num的數(shù)值為num=15,而在輸出中還想給出其它說明性附加信息,則可利用下面的語句 disp (The value of num is ,int2str(num), !ok),這樣可得 The value of num is 15 !ok,48,與int2str( ) 函數(shù)的功能及調(diào)用方式相似,MATLAB還提供了num2str( )函數(shù),可以將給出的實型數(shù)據(jù)轉(zhuǎn)換成字符串的表達式,最終也可以將該字符串輸出出
25、來。例如給繪制的圖形賦以數(shù)字的標題時可采用下面的命令 c=(70-32)/1.8; title(Room temperature is ,num2str(c), degrees C),則會在當(dāng)前圖形上加上題頭標注 Room temperature is 21.1111 degrees C,49,1.2.6 數(shù)值顯示格式,MATLAB可以使用format命令來改變顯示格式,其調(diào)用格式為 format 控制參數(shù) 其中 控制參數(shù)決定顯示格式,控制參數(shù)如表1-5表示。 除format命令外,還可由MATLAB命令窗口的Options|Numeric Format菜單項來設(shè)置顯示形式。,50,表1-5
26、format命令的控制參數(shù),表1-5 format命令的控制參數(shù),51,1.3 MATLAB的矩陣運算,MATLAB的基本數(shù)據(jù)單元是不需要指定維數(shù)的復(fù)數(shù)矩陣,它提供了各種矩陣的運算與操作,因它既可以對矩陣整體地進行處理,也可以對矩陣的某個或某些元素進行單獨地處理,所以在MATLAB環(huán)境下矩陣的操作同數(shù)的操作一樣簡單。因向量可作為矩陣的一列或一行,標量(一個數(shù))有時則作為只含一個元素的矩陣,故向量和標量都可以作為特殊矩陣來處理。,52,1.3.1 矩陣的實現(xiàn),在MATLAB語言中不必描述矩陣的維數(shù)和類型,它們是由輸入的格式和內(nèi)容來確定的,例如當(dāng) A1 2時,把A當(dāng)作一個2維向量; A5時,把A當(dāng)
27、作一個標量; A12i時,把A當(dāng)作一個復(fù)數(shù)。 矩陣可以用以下幾種方式進行賦值 * 直接列出元素的形式; * 通過語句和函數(shù)產(chǎn)生; * 建立在文件中; * 從外部的數(shù)據(jù)文件中裝入。,53,1.簡單矩陣的輸入 對于比較小的簡單矩陣可以使用直接排列的形式輸入,把矩陣的元素直接排列到方括號中,每行內(nèi)的元素間用空格或逗號分開,行與行的內(nèi)容用分號隔開。 在MATLAB下的輸入方式為 A=1, 2, 3; 4, 5, 6; 7, 8, 9 或 A=1 2 3; 4 5 6; 7 8 9 都將得相同的結(jié)果,54,對于比較大的矩陣,可以用回車鍵代替分號,對每一行的內(nèi)容分行輸入,也可利用續(xù)行符號(),把一行的內(nèi)容
28、分兩行來輸入。 如前面的矩陣還可以等價地由下面兩種方式來輸入。 A= 1 2 3 ; 4 5 6 7 8 9 或 A=1 2 3 ;4 5 6; 7 8 9 輸入后A矩陣將一直保存在工作空間中,除非被替代和清除,在MATLAB的命令窗口中可隨時查看其內(nèi)容。,55,利用size( )函數(shù)可測取一個矩陣的維數(shù),該函數(shù)的調(diào)用格式為 n, m=size(A) 其中 A為要測試的矩陣名,而返回的兩個參數(shù)n和m分別為A矩陣的行數(shù)和列數(shù)。 當(dāng)要測試的變量是一個向量時,當(dāng)然仍可由size( )函數(shù)來得出其大小,更簡潔地,用戶可以使用length( )函數(shù)來求出,該函數(shù)的調(diào)用格式為 n=length(x) 其中
29、 x為要測試的向量名,而返回的n為向量x的元素個數(shù)。,56,如果對一個矩陣A用length(A)函數(shù)測試,則返回該矩陣行列的最大值,即該函數(shù)等效于max(size(A)。,57,2矩陣的元素 MATLAB的矩陣元素可用任何表達式來描述,它既可以是實數(shù),也可以是復(fù)數(shù),例如 B= -1/3 1.3; sqrt(3) (1+2+3)*i,B -0.3333 1.3000 1.7321 0+6.0000i MATLAB允許把矩陣作為元素來建立新的矩陣,例如,利用A矩陣通過下面的語句 C= A;10,11,12,58,MATLAB還允許對一個矩陣的單個元素進行賦值和操作,例如如果想將A矩陣的第2行第3列
30、的元素賦為100,則可通過下面的語句來完成 A(2,3)=100,A= 12 3 4 5 100 78 9 這時將只改變此元素的值,而不影響其它元素的值。,59,如果給出的行數(shù)或列數(shù)大于原來矩陣的范圍,則MATLAB將自動擴展原來的矩陣,并將擴展后未賦值的矩陣元素置為0。例如如果想把矩陣A的第4 行第5列元素的值定義為8,就可以通過下面語句來完成。 A(4,5)=8,A= 1 2 3 0 0 4 5 100 0 0 7 8 9 0 0 0 0 0 0 8,60,矩陣的元素也可利用下例語句來產(chǎn)生 S1:S2:S3 其中 S1為起始值,S3為終止值,S2為步矩。使用這樣的命令就可以產(chǎn)生一個由S1開
31、始,以步距S2自增,并終止于S3的行向量,如 y=0:pi/4:pi,y= 0.7854 1.5708 2.3562 3.1416 如果S2省略,則可以認為自增步距為1,例如 x=1:5,61,3特殊矩陣的實現(xiàn) 在MATLAB中特殊矩陣可以利用函數(shù)來建立。 1)單位矩陣函數(shù)eye( ) 基本格式 Aeye(n) 產(chǎn)生一個n階的單位矩陣A 或 Aeye(size(B) 產(chǎn)生與B矩陣同階的單位矩陣A,62,2)零矩陣函數(shù)zeros( ) 3) 1矩陣函數(shù)ones( ) 4) 隨機元素矩陣函數(shù)rand( ) 5)對角矩陣函數(shù)diag( ) 6) 伴隨矩陣函數(shù)compan( ) 7) 上三角矩陣函數(shù)t
32、riu( )和下三角矩 陣函數(shù)tril( ),63,1.3.2 矩陣的運算,矩陣運算是MATLAB的基礎(chǔ),MATLAB的矩陣運算功能十分強大,并且運算的形式和一般的數(shù)學(xué)表示十分相似。 1.矩陣的轉(zhuǎn)置 矩陣轉(zhuǎn)置的運算符為“ ”。例如 A=1 2 3;4 5 6;B= A,A= 1 4 2 5 3 6,64,2矩陣的加和減,矩陣的加減法的運算符為“”和“”。矩陣只有同階方可進行加減運算,標量可以和矩陣進行加減運算但應(yīng)對矩陣的每個元素施加運算。例如 A=1 2 3;4 5 6; B=A+1,B= 2 3 4 5 6 7,65,3矩陣的乘法,矩陣的乘法運算符為“*”。 當(dāng)兩個矩陣中前一矩陣的列數(shù)和后一
33、矩陣的行數(shù)相同時,可以進行乘法進行運算,這與數(shù)學(xué)上的形式是一致的。例 CA*B; 在MATLAB中還可進行矩陣和標量相乘,其結(jié)果為標量與矩陣中的每個元素分別相乘。,66,4.矩陣的除法,矩陣的除法有兩種運算符“”和“/”,分別表示左除和右除。 一般地講,x= AB是A*x=B的解,x=B/A是x*A=B的解,通常ABB/A, 而AB=inv(A)*B, B/A= B*inv(A)。,67,5.矩陣的乘方,矩陣的乘方運算符為“”。 一個方陣的乘方運算可以用AP來表示 。P為正整數(shù),則A的P次冪即為A矩陣自乘P次。如果P為負整數(shù),則可以將A自乘 P次,然后對結(jié)果進行求逆運算,就可得出該乘方結(jié)果。如
34、果P是一個分數(shù),例如Pmn,其中n和m均為整數(shù),則首先應(yīng)該將A矩陣自乘n次,然后對結(jié)果再開m次方。,68,6.矩陣的翻轉(zhuǎn),MATLAB還提供了一些矩陣翻轉(zhuǎn)處理的特殊命令,對nm維矩陣A 如 B=fliplr(A) %命令將矩陣A進行左右翻轉(zhuǎn)再賦給B,即bijai,m+1-j, C=flipud(A) %命令將矩陣A進行上下翻轉(zhuǎn)再賦給C,即cijan+1-i,j, D=rot90(A) %命令將矩陣A進行旋轉(zhuǎn)90度后賦給D,即dijaj,m+1-I。,69,7. 矩陣的超越函數(shù),MATLAB中exp( ),sqrt( ),sin( ),cos( )等基本函數(shù)命令可以直接使用在矩陣上,這種運算只定
35、義在矩陣的單個元素上,即分別對矩陣的每個元素進行運算。超越數(shù)學(xué)函數(shù),可以在函數(shù)后加上m而成為矩陣的超越函數(shù),例如expm(A),sqrtm(A),logm(A)分別為矩陣指數(shù)、矩陣開方和矩陣對數(shù)。矩陣的超越函數(shù)要求運算的矩陣必須為方陣。,70,8.關(guān)系運算,MATLAB常用的關(guān)系操作符有 小于 大于 等于 小于等于 大于等于 不等于 MATLAB的關(guān)系操作符可以用來比較兩個大小相同的矩陣,或者比較一個矩陣和一個標量。比較兩個元素大小時,結(jié)果是1表明真,結(jié)果是0表明為假。關(guān)系運算函數(shù)如表1-6所示。 表1-6 關(guān)系運算符,71,函數(shù)find( )在關(guān)系運算中很有用,它可以在矩陣中找出一些滿足一定
36、關(guān)系的數(shù)據(jù)元素。例如 A=1:9; B=A4,B= 0 0 0 0 1 1 1 1 1,C=A(A4) C= 5 6 7 8 9,或C=find(A4),C= 5 6 7 8 9,72,9.邏輯運算,MATLAB的邏輯操作符有 (與)、|(或)和(非)。它們通常用于元素或01矩陣的邏輯運算。 與和或運算符可比較兩個標量或兩個同階矩陣,對于矩陣,邏輯運算符是作用于矩陣中的元素。邏輯運算結(jié)果信息也用“0”和“1”表示,邏輯操作符認定任何非零元素都表示為真。給出1為真,0為假。,73,非是一元操作符,當(dāng)A非零時,A返回的信息為0,當(dāng)A為零時, A返回信息為1。因而就有:P|( P)返回值為1,P(
37、P)返回值為0。例 A=1:9;C=(A4),C= 1 1 1 1 0 0 0 0 0,C=(A4) y=4 5 6; z=x.*y,z= 4 10 18 可見向量的輸入和輸出與矩陣具有相同的格式,但它們的運算規(guī)則不同,例如,如果x是一個向量,則求取函數(shù)x平方時不能直接寫成x*x,而必須寫成x.* x,否則將給出錯誤信息。,78,但是對于矩陣可以使用向量運算符號,這時實際上就相當(dāng)于把矩陣看成了向量進行運算。例如對于兩個維數(shù)相同的A,B矩陣,CA.*B表示A和B矩陣的相應(yīng)元素之間直接進行乘法運算,然后將結(jié)果賦給C矩陣,把這種運算稱為矩陣的點積運算,兩個矩陣之間的點積是它們對應(yīng)元素的直接運算,它與
38、矩陣的乘法是不同的。例如 A=1 2 3;4 5 6;7 8 9; B=2 3 4;5 6 7;8 9 0; C=A.*B 結(jié)果顯示 C= 2 6 12 20 30 42 56 72 0,79,1.4.3 向量的除法 向量除法的操作符為“./”或“.”。它們的運算結(jié)果一樣。 例如對前面給出的x和y向量 z=y./ x,z= 4.0000 2.5000 2.0000 對于向量x.y和y./x一樣,將得到相同的結(jié)果,這與矩陣的左、右除是不一樣的,因向量的運算是它們對應(yīng)元素間的運算。 對于矩陣也可使用向量的除法操作符,這時就相當(dāng)于把矩陣看成向量進行運算。,80,1.4.4 向量的乘方 向量乘方的運算
39、符為“.”。向量的乘方是對應(yīng)元素的乘方,在這種底與指數(shù)均為向量的情況下,要求它們的維數(shù)必須相同。例如 x=1 2 3; y=4 5 6; z= x.y,z= 1 32 729 它相當(dāng)于 z=1 2 34 5 6=14 25 36,81,1.5 MATLAB的控制語句,MATLAB是一個功能極強的高度集成化程序設(shè)計語言,它具備一般程序設(shè)計語言的基本語句結(jié)構(gòu),并且它的功能更強,由它編寫出來的程序結(jié)構(gòu)簡單,可讀性強。和其它高級語言一樣,MATLAB也提供了條件轉(zhuǎn)移語句、循環(huán)語句等一些常用的控制語句,從而使得MATLAB語言的編程顯得十分靈活。,82,1.5.1 循環(huán)語句,MATLAB中可以使用兩種循
40、環(huán)語句: for語句和while語句。 1.for語句的基本格式為 for 循環(huán)變量表達式1:表達式3:表達式2 循環(huán)語句組 end,83,mysum0; for i=1:100 mysum=mysum+i; end,84,2while語句的基本結(jié)構(gòu)為 while (條件式) 循環(huán)體條件組 end 其執(zhí)行方式為,若條件式中的條件成立,則執(zhí)行循環(huán)體的內(nèi)容,執(zhí)行后再判斷表達式是否仍然成立,如果表達式不成立,則跳出循環(huán),向下繼續(xù)執(zhí)行。,85,例如對于上面的例子,如果改用while循環(huán)語句,則可以寫出下面的程序 sum=0;i=1; while (i=100) sum=sum+i;i=i+1; end
41、 MATLAB提供的循環(huán)語句for和while是允許多級嵌套的,而且它們之間也允許相互嵌套,這和C語言等高級程序設(shè)計語言是一致的。,86,1.5.2 條件轉(zhuǎn)移語句,MATLAB提供的條件語句是由if引導(dǎo)的,其格式為 if (條件式) 條件塊語句組 end 當(dāng)給出的條件式成立時,則執(zhí)行該條件塊結(jié)構(gòu)中的語句內(nèi)容,執(zhí)行完之后繼續(xù)向下執(zhí)行,若條件不成立,則跳出條件塊而直接向下執(zhí)行。,87,例如將前面的問題變成求滿足 的最小m值, 則有如下程序 mysum=0; for m=1:1000 if (mysum1000) break; end mysum=mysum+m; end,88,注意, 這里使用了b
42、reak命令,其作用就是中止上一級的for 語句循環(huán)過程,同樣while循環(huán)語句也在條件轉(zhuǎn)移語句中起著相當(dāng)重要的作用,因為在MATLAB下沒有提供絕對轉(zhuǎn)移的指令。 例如如果想對一個問題進行回答,而這個問題要求鍵入y(表示是)或n(表示否)兩個字符之一,否則將要求用戶重新輸入這樣的字符,直至輸入y或n為止,要實現(xiàn)這樣的功能,則可由下列的while循環(huán)程序來執(zhí)行。,89,ikey=0; while(ikey= =0) s1=input(Is the answer correct?y/n? ,s); if(s1=y|s1=n) ikey=1; end end,90,如果不使用附加變量ikey,上面的
43、程序段也可修改成 %Example while(1) s1 =input(Is the answer correct?y/n?,s); if(s1=y|s1=n) break; end end,91,MATLAB還提供了其它兩種條件結(jié)構(gòu),if-else 格式和if-else if 格式,這兩種格式的調(diào)用方法分別為 if (條件式) 條件塊語句組1 else 條件塊語句組2 end,92,和 if (條件式1) 條件塊語句組1 else if 條件式2 條件塊語句組2 end,93,1.5.3 echo,pause,keyboard,debug語句,一般來說當(dāng)一個m文件運行時,文件中的命令不在屏
44、幕上顯示出來,而利用echo命令可以使m文件在運行時把其中的命令顯示在工作空間中,這對于調(diào)試、演示等很有用。 例pause( )命令使用戶暫停運行程序,當(dāng)再按任一鍵時恢復(fù)執(zhí)行。其中pause(n)中的n為等待的秒數(shù)。,94,.6 MATLAB的繪圖功能,1基本形式 MATLAB最基本的繪圖函數(shù)為plot( )。 如果y是一個n 維向量,那么plot(y)繪制一個y元素和y元素排列序號1,2,, n之間關(guān)系的線性坐標圖。例如 y=0 0.48 0.84 1 0.91 0.6 0.14; plot(y) 則顯示如圖1-2所示曲線。,95,如果x和y是兩個等長向量,那么 plot(x,y) 將繪制一
45、條x和y的之間關(guān)系的線性坐標圖。例如 x=0:0.1:2*pi; y=sin(x);plot(x,y) 則顯示如圖1-3所示曲線。,圖1-2 圖1-3,96,2多重線型,在同一圖形中可以繪制多重線型,基本命令格式為 plot(x1,y1,x2,y2,xn,yn) 以上命令可將x1對y1,x2對y2,xn對yn的圖形繪制在一個圖形中,而且分別采用不同的顏色或線型。例如以下命令可顯示如圖1-4所示曲線。 x=0:0.1:2*pi;plot(x,sin(x),x,cos(x),97,圖1-4,98,3.圖形修飾及文本標注,MATLAB中對于同一圖形中的多重線,不僅可分別定義其線型,而且可分別選擇其顏
46、色,帶有選項的曲線繪制命令的調(diào)用格式為 plot(x1, y1,選項,x2, y2,選項2, xn, yn,選項n) 其中 x1,x2,xn為x軸變量,y1, y2, yn為y軸變量,選項如下表1-8所示。,99,表1-8 MATLAB的繪圖命令的各種選項,表1-8 MATLAB的繪圖命令的各種選項,100,表1-8 MATLAB的繪圖命令的各種選項,上表中的線型和顏色選項可以同時使用,例如 x=0:0.1:2*pi; plot(x,sin(x),-g, x,cos(x),-.r),101,繪制完曲線后,MATLAB還允許用戶使用它提供的特殊繪圖函數(shù)來對屏幕上已有的圖形加注釋、題頭或坐標網(wǎng)格。
47、例如 x=0:0.1:2*pi;y=sin(x);plot(x, y) title(Figure Example) 給出題頭 xlabel(This is x axis) x軸的標注 ylabel(This is y axis) y軸的標注 grid 增加網(wǎng)格 legand(sin(x)加圖例,102,除了在標準位置書寫標題和軸標志以外,MATLAB還允許在圖形窗口的位置利用line( ) 和text( )命令畫直線或?qū)懽址?,它們的調(diào)用格式分別為 line(x, y)及text(x, y,chstr,選項) 其中 line( )函數(shù)在給定的圖形窗口上繪制一條由向量x 和y定義的折線,text
48、( )函數(shù)是在指定的點(x,y)處寫一個chstr繪出的字符串,而選項決定x,y坐標的單位,如選項為sc,則x,y表示規(guī)范化的窗口相對坐標,其范圍為0到1,即左下角坐標為(0,0),而右上角的坐標為(1,1)。,103,用text( )命令可以在圖形中的任意位置加上文本說明,但是必須知道其位置坐標,而利用另一個函數(shù)gtext( ),則可以用鼠標來對要添加的文本字符串定位。在MATLAB的工作空間中鍵入下列命令 gtext(sin(x) 那么在圖中,將會出現(xiàn)一個十字叉 ,用鼠標拖動它到添加文本的位置,單擊鼠標,gtext( )命令中的文本字符串sin(x)就自動添加到指定的位置。,104,4.圖
49、形控制 MATLAB允許將一個圖形窗口分割成nm部分,對每一部分可以用不同的坐標系單獨繪制圖形,窗口分割命令的調(diào)用格式為 subplot(n,m,k) 其中 n,m分別表示將這個圖形窗口分割的行列數(shù),k表示每一部分的代號,例如想將窗口分割成43個部分,則右下角的代號為 12,MATLAB最多允許99的分割。,105,盡管MATLAB可以自動根據(jù)要繪制曲線數(shù)據(jù)的范圍選擇合適的坐標系,使得曲線能夠盡可能清晰地顯示出來,但是,如果覺得自動選擇的坐標還不合適時,還可以用手動的方式來選擇新的坐標系,調(diào)用函數(shù)的格式為 axis(xmin, xmax, ymin, ymax) 另外,MATLAB還提供了清除
50、圖形窗口命令clg、保持當(dāng)前窗口的圖形命令hold、放大和縮小窗口命令zoom等。,106,5.特殊坐標圖形 除了基本的繪圖命令plot( )外,MATLAB還允許繪制極坐標曲線、對數(shù)坐標曲線、條形圖和階梯圖等。 極坐標曲線繪制函數(shù)的調(diào)用格式為 polar(theta,rho,選項) 其中 theta和rho分別為長度相同的角度向量和幅值向量。選項的內(nèi)容和plot( )函數(shù)的基本一致。,107,對數(shù)和半對數(shù)曲線繪制函數(shù)的調(diào)用格式分別為 semilogx(x,y,選項) 繪制x軸為對數(shù)標度的圖形,選項同plot( ) semilogy(x,y,選項) 繪制y軸為對數(shù)標度的圖形,選項同plot( ) loglog(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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工特種作業(yè)人員安全技術(shù)理論考核試題-施工升降機安拆專業(yè)試題
- 科技引領(lǐng)的企業(yè)信息化革新
- 科技巨頭在移動支付市場的發(fā)展策略分析
- 科技型企業(yè)創(chuàng)新模式探索與實踐
- 電動自行車智能充電樁設(shè)計與調(diào)試標準解析
- 合伙開藥店合同范本
- 科技園區(qū)中的綠色能源項目投資報告
- 社會福利與數(shù)據(jù)分析的經(jīng)濟評價研究
- 直接銀團貸款合同范本
- 現(xiàn)代家居智能安全系統(tǒng)的設(shè)計與實施
- 外陰及陰道炎癥
- 球泡檢驗標準
- 公安筆錄模板之詢問嫌疑人(書面?zhèn)鲉局伟舶讣?
- 振動分析基礎(chǔ)講義1
- 記賬憑證匯總表excel模板
- 鄧麗君經(jīng)典歌曲30首簡譜(共33頁)
- 故障診斷技術(shù)的國內(nèi)外發(fā)展現(xiàn)狀(共3頁)
- 園林綠化施工通用表格模板
- 人民檢察院信訪案件終結(jié)辦法
- 最新三級醫(yī)師查房督導(dǎo)評分細則及檢查登記表資料
評論
0/150
提交評論