版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、內(nèi)容提要本章主要介紹MATLAB程序設(shè)計(jì)的有關(guān)基礎(chǔ)知識(shí)。第1頁(yè),共73頁(yè)。4.1 MATLAB的變量和表達(dá)式一、MATLAB的變量及其類型1、變量命名規(guī)則(1)變量名(包括函數(shù)名)對(duì)字母的大小寫(xiě)敏感,即MATLAB區(qū)分字母的大小寫(xiě);(2)變量名的第一個(gè)字符必須為英文字母,而且不能超過(guò)31個(gè)字符;(3)變量名由英文字母、數(shù)字和下劃線組成,即變量名可以包含下連字符、數(shù)字,但不能為空格符(Backspace)和標(biāo)點(diǎn)。第2頁(yè),共73頁(yè)。2、局部變量和全局變量(1)局部變量只在每個(gè)函數(shù)體內(nèi)定義、使用,而不能從其他函數(shù)和MATLAB工作空間訪問(wèn)的變量稱為局部變量。(2)全局變量在多個(gè)函數(shù)及MATLAB函數(shù)
2、中都能使用的變量稱為全局變量。通常每個(gè)函數(shù)體內(nèi)都有自己定義的變量,不能從其他函數(shù)和MATLAB工作空間訪問(wèn)這些變量,這就是局部變量。如果要使某個(gè)變量在幾個(gè)函數(shù)及MATLAB函數(shù)中都能使用,它就是全局變量。第3頁(yè),共73頁(yè)。(3)局部變量和全局變量的區(qū)別全局變量名應(yīng)盡可能大寫(xiě),并用“global聲明。如果要在幾個(gè)函數(shù)和MATLAB的工作空間中都能訪問(wèn)一個(gè)全局變量,則需在每個(gè)函數(shù)和MATLAB工作空間中都聲明該變量是全局變量。全局變量要在函數(shù)體的變量賦值語(yǔ)句之前說(shuō)明,整個(gè)函數(shù)以及所有對(duì)函數(shù)的遞歸調(diào)用都可以利用全局變量?!咀⒁狻浚涸趯?shí)際編程中,應(yīng)盡量避免使用全局變量,因?yàn)槿肿兞康闹狄坏└膭?dòng),則在其
3、他包括該變量的函數(shù)中都將改變,這樣有可能會(huì)出現(xiàn)不可預(yù)見(jiàn)的情況。第4頁(yè),共73頁(yè)。3、永久變量/預(yù)定義變量定義變量時(shí),有些MATLAB的保留字符不能用,其中有一部分就是MATLAB的永久變量,也稱為預(yù)定義變量(Predefmed Variable)。每當(dāng)MATLAB啟動(dòng)時(shí),系統(tǒng)自動(dòng)定義變量,駐留于內(nèi)存中。它們不會(huì)被命令clear清除(永久變量的名稱就源于此)。系統(tǒng)也可以為這些永久變量賦值,但所賦的值可以用clear命令清除,從而恢復(fù)系統(tǒng)預(yù)定義的值(預(yù)定義變量的名字就反映這個(gè)意思)。第5頁(yè),共73頁(yè)。表4-1 MATLAB的永久變量變量名含義ans預(yù)設(shè)的計(jì)算結(jié)果的變量名EpsMATLAB定義的正的
4、極小值=2.2204e-16pi內(nèi)建的值Inf或inf值,無(wú)限大,定義為1/0NaN或nan無(wú)法定義一個(gè)數(shù)目,非數(shù)(Not a Number),如0/0i 或 j虛數(shù)單位nargin函數(shù)輸入?yún)?shù)個(gè)數(shù)nargout函數(shù)輸出參數(shù)個(gè)數(shù)realmax最大的正實(shí)數(shù)realmin最小的正實(shí)數(shù)flops浮點(diǎn)運(yùn)算次數(shù)【注意】:(1)用戶在編寫(xiě)指令和程序時(shí),盡可能不對(duì)表4-1中所列永久變量名重新賦值,以免產(chǎn)生混淆。(2)鍵入clear則是去除所有定義過(guò)的變量名稱,但不能清除永久變量。第6頁(yè),共73頁(yè)。例4-1example4_1.m無(wú)窮大的使用和作用。y=1/0 無(wú)窮大的使用 Warning: Divide b
5、y zero. Y= Inf1/y 無(wú)窮大的作用和ans變量的使用 ans= 0【說(shuō)明】:在MATLAB中,象1/0這樣的操作不會(huì)引起程序執(zhí)行中斷,只是在給出警告信息的同時(shí),用一個(gè)永久變量inf來(lái)表示,而且這個(gè)變量和其他變量一樣,可在各種運(yùn)算中發(fā)揮巨大的作用。第7頁(yè),共73頁(yè)。二、MATLAB基本表達(dá)式MATLAB采用的是表達(dá)式語(yǔ)言,用戶輸入的語(yǔ)句由MATLAB系統(tǒng)解釋運(yùn)行。用戶可以在MATLAB的命令窗口中鍵入命令,也可以在編輯器內(nèi)編寫(xiě)應(yīng)用程序,MATLAB軟件對(duì)此命令或程序中各條語(yǔ)句進(jìn)行翻譯,然后在MATLAB環(huán)境下對(duì)它進(jìn)行處理,最后返回運(yùn)算結(jié)果。MATLAB語(yǔ)句由表達(dá)式和變量組成,有兩種
6、表示形式:表達(dá)式變量=表達(dá)式第8頁(yè),共73頁(yè)。表達(dá)式書(shū)寫(xiě)規(guī)則MATLAB表達(dá)式書(shū)寫(xiě)規(guī)則與“手寫(xiě)算式”差不多相同,具體遵循以下規(guī)定:(1)表達(dá)式由變量名、運(yùn)算符、數(shù)字和函數(shù)名組成;(2)表達(dá)式將按常規(guī)的優(yōu)先級(jí)從左至右執(zhí)行運(yùn)算;(3)優(yōu)先級(jí)的規(guī)定是:指數(shù)運(yùn)算級(jí)別最高,乘除運(yùn)算次之,加減運(yùn)算級(jí)別最低;(4)括號(hào)可以改變運(yùn)算順序;(5)書(shū)寫(xiě)表達(dá)式時(shí),賦值符“=”和運(yùn)算符兩側(cè)允許有空格,以增加可讀性。但在復(fù)數(shù)或符號(hào)表達(dá)式中要盡量避免,以防出錯(cuò);(6)表達(dá)式的末尾可加上“;”,也可以不加。有“;”時(shí),MATLAB系統(tǒng)不顯示計(jì)算結(jié)果,而是直接把數(shù)值賦給變量,如果沒(méi)有用變量就無(wú)法看到結(jié)果;沒(méi)有“;”時(shí),MAT
7、LAB系統(tǒng)將會(huì)在該條語(yǔ)句的下面直接顯示運(yùn)算結(jié)果。第9頁(yè),共73頁(yè)。4.2 MATLAB數(shù)組及其類型一、MATLAB的數(shù)據(jù)結(jié)構(gòu)MATLAB是一種面向數(shù)組(Array)的編程語(yǔ)言,其數(shù)據(jù)類型的最大特點(diǎn)是每一種類型都以數(shù)組為基礎(chǔ),從數(shù)組中派生出來(lái)的,事實(shí)上,MATLAB把每種類型的數(shù)據(jù)都作為數(shù)組來(lái)處理。在MATLAB中,有6種基本的數(shù)據(jù)類型,即:char(字符)、double(雙精度數(shù)值)、sparse(稀疏數(shù)據(jù))、storage(存儲(chǔ)型)、cell(單元數(shù)組)和Struct(結(jié)構(gòu))。第10頁(yè),共73頁(yè)?!菊f(shuō)明】:(1)存儲(chǔ)型是一個(gè)虛擬數(shù)據(jù)類型,它包括int8(8位整型)、uint8(無(wú)符號(hào)8位整型
8、)、intl6(16位整型)、uintl6(無(wú)符號(hào)16位控型)、iht32(32位整型)和uint32(無(wú)符號(hào)32位整型); (2)最常用的數(shù)據(jù)類型只有雙精度型和字符型,所有MATLAB計(jì)算都把數(shù)據(jù)當(dāng)作雙精度型處理;(3)無(wú)符號(hào)8位整型一般用于儲(chǔ)存圖像數(shù)據(jù); (4)稀疏數(shù)據(jù)一般用于處理稀疏矩陣;(5)單元數(shù)組和結(jié)構(gòu)數(shù)組一般用在大型程序中;(6)儲(chǔ)型數(shù)組一般只用于內(nèi)存的有效儲(chǔ)存,可對(duì)這些類型的數(shù)組進(jìn)行操作,但不能進(jìn)行任何數(shù)學(xué)運(yùn)算,否則必須用double函數(shù)把它轉(zhuǎn)換為雙精度類型。 第11頁(yè),共73頁(yè)。3、數(shù)組之間的差別MATLAB的數(shù)組有:字符串?dāng)?shù)組(Character String Array)
9、、單元數(shù)組(Cell Array)、結(jié)構(gòu)數(shù)組(Structure Array)和數(shù)值數(shù)組(Numeric Army),它們之間的基本差別如表4-2所示。 第12頁(yè),共73頁(yè)。二、字符串?dāng)?shù)組對(duì)于MATLAB編程來(lái)說(shuō),字符處理必不可少。對(duì)于字符串的使用應(yīng)符合以下規(guī)定:(1)所有字符串都用單引號(hào)括起來(lái);(2)字符串中的每個(gè)字符都是字符串變量(矩陣或向量)中的一個(gè)元素;(3)字符串中的字符以ASCII碼形式儲(chǔ)存并區(qū)分大小。用函數(shù)abs可以看到字符的ASCII碼。第13頁(yè),共73頁(yè)。1、字符串?dāng)?shù)組的建立(1)直接賦值法建立字符串可通過(guò)直接賦值,先把待建的字符放在單引號(hào)中,然后直接賦值給變量。如:a=Th
10、is is a book a= This is a book 第14頁(yè),共73頁(yè)。(2)建立中文字符串創(chuàng)建中文字符串時(shí),字符外邊的單引號(hào)對(duì)必須在英文狀態(tài)下輸入。與英文字符一樣,每個(gè)中文字符也占一個(gè)元素位置,但應(yīng)注意此時(shí)的ASCII大于256。A=中國(guó)長(zhǎng)城 A= 中國(guó)長(zhǎng)城第15頁(yè),共73頁(yè)。(3)建立帶單引號(hào)的字符串當(dāng)字符串中的字符包含有(英文)單引號(hào)時(shí),每個(gè)單引號(hào)符用連續(xù)的兩個(gè)單引號(hào)符表示。B=China中國(guó) B= China中國(guó) 第16頁(yè),共73頁(yè)。(4)多行字符串的創(chuàng)建在直接創(chuàng)建多行字符串?dāng)?shù)組時(shí),要保證同一字符串?dāng)?shù)組的各行字符數(shù)相等,即保證各行等長(zhǎng)。如果不等長(zhǎng),則用空格符來(lái)調(diào)節(jié)其長(zhǎng)度,使它
11、們彼此相等。如:AB=中國(guó) ;chang cheng AB= 中國(guó) chang cheng 第17頁(yè),共73頁(yè)。(5)利用字符串操作函數(shù)創(chuàng)建字符串?dāng)?shù)組在MATLAB中,有專用函數(shù)char、str2mat和strvcat創(chuàng)建多行字符串?dāng)?shù)組。這三個(gè)函數(shù)創(chuàng)建多行數(shù)組時(shí),不必?fù)?dān)心每行字符是否相等,它們總會(huì)按最長(zhǎng)行設(shè)置第二維的長(zhǎng)度,其他行的尾部用空格填充。它們的調(diào)用格式為:S=char(TI,T2,T3,)S=str2mat(T1,T2,T3,) S=strvcat(T1,T2,T3,) 其中T1,T2,T3,是字符串,在輸入時(shí),T1,T2,T3,兩邊要加英文狀態(tài)下的單引號(hào)。第18頁(yè),共73頁(yè)。(6)利
12、用轉(zhuǎn)換函數(shù)建立字符串?dāng)?shù)組在MATLAB中,把數(shù)值數(shù)組轉(zhuǎn)化為字符串?dāng)?shù)組的常用函數(shù)為int2str、num2str、mat2str、char和double。函數(shù)命令char可把ASCII碼數(shù)組轉(zhuǎn)化為字符串?dāng)?shù)組;命令double可把其他任何數(shù)組轉(zhuǎn)化為數(shù)值數(shù)組?!菊f(shuō)明】:中文字符能被命令char和double正確轉(zhuǎn)化。 第19頁(yè),共73頁(yè)。2、字符串?dāng)?shù)組的操作(1)字符串的連接字符串可以連接到一起組成更大的字符串??梢灾苯釉谥欣ㄌ?hào)內(nèi)用逗號(hào)連接,也可以通過(guò)函數(shù)strcat連接。如:A=中國(guó)長(zhǎng)城B=China中國(guó)ab=A, ,B, 第二個(gè)輸入是表示輸入空格字符串 ab= 中國(guó) 長(zhǎng)城China中國(guó) strc
13、at(A,B) 函數(shù)strcat連接,忽略原字符串結(jié)尾處的空格 ans= 中國(guó)長(zhǎng)城China中國(guó)第20頁(yè),共73頁(yè)。3、字符串?dāng)?shù)組元素的標(biāo)識(shí)在一維字符串?dāng)?shù)組中,MATLAB按從左向右的順序用自然數(shù)數(shù)碼(1,2,3等)標(biāo)識(shí)字符位置,其操作也用標(biāo)識(shí)來(lái)進(jìn)行。第21頁(yè),共73頁(yè)。三、單元數(shù)組 Cell Array單元數(shù)組(Cell Array)是一種比較特殊的MATLAB數(shù)組,該數(shù)組的基本成分是單元,它的每個(gè)元素都是一個(gè)單元,單元中包含其他MATLAB數(shù)組。每個(gè)單元本身在數(shù)組中是平等的,它們只能以下標(biāo)區(qū)分。單元內(nèi)可以存放任何類型、任何大小的數(shù)組,而且同一單元數(shù)組內(nèi)各單元的內(nèi)容可以不同。同數(shù)值數(shù)組一樣,
14、單元數(shù)組的維數(shù)不受限制,可以是一維、二維或更高維。單元數(shù)組對(duì)單元的編址方法有單下標(biāo)編址和全下標(biāo)編址。對(duì)于單元數(shù)組來(lái)說(shuō),單元和單元里的內(nèi)容是兩個(gè)不同的范疇。因此,尋訪單元和尋訪單元內(nèi)容是兩種不同的操作。以二維單元數(shù)組為例,A(2,3)是指A單元數(shù)組中的第二行第三列單元元素;而A2,3是指A單元數(shù)組中的第二行第三列單元中所允許存或取的內(nèi)容。兩者的區(qū)別僅是用圓括號(hào)或是用花括號(hào)。第22頁(yè),共73頁(yè)。1、單元數(shù)組的建立(1)利用賦值語(yǔ)句建立單元數(shù)組用小括號(hào)括起單元的下標(biāo),在賦值語(yǔ)句的右側(cè)用花括號(hào)括起單元的內(nèi)容。如:A(1,1)=Mtalab; 單元(1,1),字符串A(1,2)=6.0; 單元(1,2)
15、,標(biāo)量,記錄版本號(hào)A(2,1)=矩陣; 單元(2,1),中文字符串A(2,2)=2 3 4;23 l 4;5 4 8; 單元(2,2),矩陣A 列出矩陣A A= 結(jié)果 matlab 6 矩陣 3x3 double第23頁(yè),共73頁(yè)。(1)利用賦值語(yǔ)句建立單元數(shù)組(續(xù))用花括號(hào)括起單元的下標(biāo),在賦值語(yǔ)句的右側(cè)直接指定單元的內(nèi)容。如上面命令可寫(xiě)成:A1,1=matlab; 單元(1,1)中的內(nèi)容A1,2=6.0; 單元(1,2)中的內(nèi)容A2,2=矩陣; 單元(2,1)中的內(nèi)容A2,2=2 3 4;23 1 4;5 4 8; 單元(2,2)中的內(nèi)容 第24頁(yè),共73頁(yè)。(2)利用花括號(hào)(單元數(shù)組法)
16、建立單元數(shù)組在花括號(hào)中直接賦值,單元與單元之間用逗號(hào)、空格或分號(hào)隔開(kāi),使用如下語(yǔ)句也可得出與上面相同的單元數(shù)組。A=matlab,6.0; 矩陣,2 3 4;23 1 4;5 4 8或A=matlab 6.0; 矩陣 2 3 4; 23 1 4;5 4 8【說(shuō)明】:上式中6.0后面的分號(hào)表示數(shù)組另起一行,不能用別的符號(hào)代替。第25頁(yè),共73頁(yè)。(3)利用cell函數(shù)建立單元數(shù)組cell函數(shù)用來(lái)預(yù)分配指定大小的單元數(shù)組,其調(diào)用格式為:c=cell(n) 建立nn的單元數(shù)組,單元是空矩陣;C=cell(m,n)或cell(m,n) 建立mn的單元數(shù)組,單元是空矩陣;c=cell(m,n,p,)或c
17、ell(m,n,p,.) 建立mnp的單元數(shù)組,單元是空矩陣;c=cell(size(A) 建立和A大小相同的單元數(shù)組。第26頁(yè),共73頁(yè)。2、單元數(shù)組的訪問(wèn)(1)用內(nèi)容下標(biāo)(花括號(hào))訪問(wèn)單元內(nèi)容A1,1 訪問(wèn)第(1,1)個(gè)單元中的內(nèi)容 ans= matlab(2)用單元下標(biāo)(小括號(hào))訪問(wèn)單元子集A(1,1) 訪問(wèn)第(1,1)個(gè)單元 ans= matlabb=A(1:2,1) 把單元數(shù)組A中第一列的兩個(gè)單元賦給b,b也成為單元數(shù)組 b2= matlab 矩陣第27頁(yè),共73頁(yè)。3、單元數(shù)組的顯示單元數(shù)組中的內(nèi)容一般以壓縮的形式顯示。要形象地查看單元數(shù)組中的內(nèi)容,MATLAB提供了函數(shù)cellp
18、lot命令,而函數(shù)celldisp命令只是顯示單元數(shù)組全部或部分內(nèi)容。(1)cellplot函數(shù)【調(diào)用格式】:H=cellplot(C, legend); 式中第二個(gè)輸入?yún)?shù)用于現(xiàn)實(shí)色彩圖例,該命令用大白方格表示單元,用小方格表示所存的數(shù)組元素,色彩表示數(shù)據(jù)屬性。第28頁(yè),共73頁(yè)。4、單元數(shù)組的操作(1)把單元(注意,不是單元內(nèi)容)設(shè)置為空來(lái)刪除該單元數(shù)組中的單元;(2)用函數(shù)reshape命令來(lái)改變單元數(shù)組的大小,但要注意改變形狀時(shí)數(shù)組中的元素個(gè)數(shù);(3)單元數(shù)組也可像一般數(shù)組那樣用方括號(hào)進(jìn)行連接;(4)單元數(shù)組可代替用逗號(hào)或空格分隔的變量列表;(5)如果數(shù)組中的多個(gè)單元是用花括號(hào)和冒號(hào)一
19、起引用的,MATLAB則把每個(gè)單元的內(nèi)容看作一個(gè)獨(dú)立的變量。第29頁(yè),共73頁(yè)。四、結(jié)構(gòu)數(shù)組 Structure ArrayMATLAB中的結(jié)構(gòu)數(shù)組(Structure Array)與單元數(shù)組一樣,能在一個(gè)數(shù)組存放各類數(shù)組。從一定意義上講,結(jié)構(gòu)數(shù)組組織數(shù)據(jù)的能力比單元數(shù)組更強(qiáng)、更富于變化。結(jié)構(gòu)數(shù)組的基本成分是結(jié)構(gòu)(Structure),數(shù)組中的每個(gè)結(jié)構(gòu)相等,它們以下標(biāo)區(qū)分。結(jié)構(gòu)必須在劃分“域”后才能使用。數(shù)據(jù)不能直接存放在結(jié)構(gòu)上,而只能存放在域中。結(jié)構(gòu)的域可以存放任何類型、任何大小的數(shù)組,而且不同結(jié)構(gòu)的同名域中存放的內(nèi)容可以不同。第30頁(yè),共73頁(yè)。1、結(jié)構(gòu)數(shù)組的建立(1)直接建立結(jié)構(gòu)數(shù)組直接
20、建立結(jié)構(gòu)和各個(gè)域,同時(shí)給各域賦值(也可以不賦值),結(jié)構(gòu)和域之間用點(diǎn)連接。在訪問(wèn)結(jié)構(gòu)數(shù)組的各個(gè)域時(shí),也是“結(jié)構(gòu)數(shù)組名.域名”的格式。當(dāng)結(jié)構(gòu)帶有子域時(shí),需完整地鍵入結(jié)構(gòu)名、域名、子域名,才能顯示域中的內(nèi)容。結(jié)構(gòu)數(shù)組的各個(gè)域可以按照其本身的數(shù)據(jù)類型進(jìn)行相應(yīng)的各種運(yùn)算。第31頁(yè),共73頁(yè)。例4-5example4-5.m建立一橋梁混凝土試件強(qiáng)度的結(jié)構(gòu)數(shù)組。=XX大橋; 域名為name,中文字符串,記錄橋名bridge.position=頂板; 域名為position,中文字符串,記錄試件位置bridge.position.group=2組; 子域名為group,字符串,記錄組數(shù)b
21、ridge.position.value=28.4 29.4 30.1;26.8 29.0 28.8; 子域名value,記錄試件強(qiáng)度第32頁(yè),共73頁(yè)。例4-5example4-5.m(續(xù))bridge 得到結(jié)構(gòu)數(shù)組的內(nèi)容如下 bridge= name: XX大橋 position: 1x1 struct bridge.position 顯示域position中的內(nèi)容 ans= group: 2組 value:2x3 doublebridge.position.value 顯示域value中的內(nèi)容 ans= 28.4000 29.4000 30.1000 26.8000 29.0000 28
22、.8000 第33頁(yè),共73頁(yè)。(2)利用structure函數(shù)創(chuàng)建結(jié)構(gòu)數(shù)組MATLAB有一個(gè)專門(mén)建立結(jié)構(gòu)數(shù)組的函數(shù)struct。該函數(shù)命令的調(diào)用格式為: struct(fieldl,valuesl,field2,values2,) 用指定的域名和各個(gè)域的數(shù)據(jù)建立結(jié)構(gòu)數(shù)組。如果數(shù)組中包含多個(gè)結(jié)構(gòu),而且各個(gè)結(jié)構(gòu)域中的數(shù)據(jù)不盡相同,則域的數(shù)據(jù)valuesl、values2、必須是單元數(shù)組。建立的結(jié)構(gòu)數(shù)組和單元數(shù)組的大小相同。第34頁(yè),共73頁(yè)。2、結(jié)構(gòu)數(shù)組的操作(1)結(jié)構(gòu)數(shù)組域中內(nèi)容的調(diào)取和設(shè)置在MATLAB中,對(duì)結(jié)構(gòu)數(shù)組域中內(nèi)容的調(diào)取和設(shè)置可通過(guò)函數(shù)getfield和setfield進(jìn)行。(2)
23、刪除結(jié)構(gòu)的域 在MATLAB中,利用函數(shù)rmfield可以刪除結(jié)構(gòu)的域。(3)結(jié)構(gòu)數(shù)組和單元數(shù)組的轉(zhuǎn)換在MATLAB中,利用函數(shù)struct2cell和cell2struct可以進(jìn)行結(jié)構(gòu)數(shù)組和單元數(shù)組之間的轉(zhuǎn)換。第35頁(yè),共73頁(yè)。3、數(shù)據(jù)的分配MATLAB中的函數(shù)deal可把輸入數(shù)據(jù)分配給輸出數(shù)據(jù),其調(diào)用格式為:(1)A,B,C,=deal(X,Y,Z,) 等價(jià)于 A=X,B=Y,C=Z,(2)A,B,C,=deal(X) 等價(jià)于A=X,B=X,C=X,第36頁(yè),共73頁(yè)。例4-6example4_6.msys=rand(3) ones(3,1) eye(3) zeros(3,1); 建立單
24、元數(shù)組sysa,b,c,d=deal(sys:); 把sys中的每個(gè)“單元”分配給相對(duì)應(yīng)的變量 a= 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 b= 1 1 1 c= 1 0 0 0 1 0 0 0 1 d= 0 0 0【說(shuō)明】:例4-5中的sys:和sys不同,sys是將整個(gè)單元數(shù)組分配給每個(gè)變量。第37頁(yè),共73頁(yè)。4.3 MATLAB的運(yùn)算符和操作符一、運(yùn)算符在MATLAB中,最常見(jiàn)的運(yùn)算符如表4-4所示?!咀ⅰ浚涸诰仃囘\(yùn)算中,左除和右除有一定的區(qū)別。第38頁(yè),共73頁(yè)。二、操作符MATLAB中,操作符在
25、資料構(gòu)造和運(yùn)算中非常有用。各操作符的含義如表4-5所示。【說(shuō)明】:(3)分號(hào)“;” 在方括號(hào)中,分號(hào)表示矩陣中行的結(jié)尾。如用在每行的結(jié)尾,則MATLAB不會(huì)顯示該行運(yùn)算的結(jié)果,此功能可以用在M文件中控制命令的顯示,減少輸出篇幅。(1)冒號(hào)“:” 冒號(hào)在矩陣的構(gòu)造和運(yùn)算中極為實(shí)用,它可以用來(lái)產(chǎn)生向量;用作矩陣的下標(biāo);部分地選擇矩陣元素;進(jìn)行行循環(huán)操作等。(2)續(xù)號(hào)“” 如果一個(gè)命令很長(zhǎng),一行容不下,則可以在一行的末尾加三個(gè)或更多的點(diǎn),表示此行未完,而在下一行繼續(xù)。第39頁(yè),共73頁(yè)。4.4 MATLAB的關(guān)系運(yùn)算和邏輯運(yùn)算除了傳統(tǒng)的數(shù)學(xué)運(yùn)算,MATLAB支持關(guān)系和邏輯運(yùn)算。在程序流程控制中,常有
26、一些邏輯和模糊邏輯推理,需要對(duì)其做出“是真、是假”的判斷或回答,以便控制程序的流程,或執(zhí)行次序。作為所有關(guān)系和邏輯表達(dá)式的輸入,MATLAB把任何非零數(shù)值當(dāng)作真,把零當(dāng)作假。所有關(guān)系和邏輯表達(dá)式的輸出,對(duì)于真,輸出為1;對(duì)于假,輸出為零。第40頁(yè),共73頁(yè)。關(guān)系和邏輯運(yùn)算的有關(guān)規(guī)定(1)在所有的關(guān)系表達(dá)式和邏輯表達(dá)式中,輸入的任何非0數(shù)都被看作是“邏輯真”,而只有0才被認(rèn)為是“邏輯假”;(2)所有關(guān)系表達(dá)式和邏輯表達(dá)式的計(jì)算結(jié)果是一個(gè)由0和1組成的“邏輯數(shù)組(Logical Array)”,數(shù)組中的1表示“真”,0表示“假”;(3)邏輯數(shù)組是一種特殊的數(shù)值數(shù)組,與“數(shù)值類”有關(guān)的操作和函數(shù)對(duì)它
27、也適用;但它又不同于普通的“數(shù)值”,它還表示對(duì)事物的判斷結(jié)論“真”與“假”,有其自身的特殊用途。第41頁(yè),共73頁(yè)。一、關(guān)系運(yùn)算1、關(guān)系運(yùn)算符MATLAB關(guān)系(運(yùn)算)操作符用來(lái)比較兩個(gè)同樣大小的數(shù)組,或用來(lái)比較一個(gè)數(shù)組和一個(gè)標(biāo)量。其關(guān)系操作符如表4-6所示。注:=和=意味著兩種不同的事:= 比較兩個(gè)變量,當(dāng)它們相等時(shí)返回1,當(dāng)它們不相等時(shí)返回0;在另一方面,=被用來(lái)將運(yùn)算的結(jié)果賦給一個(gè)變量。關(guān)系操作符功能說(shuō)明關(guān)系操作符功能說(shuō)明小于大于 =大于或等于= =等于 =不等于第42頁(yè),共73頁(yè)。2、關(guān)系運(yùn)算規(guī)則(1)比較的兩個(gè)變量是標(biāo)量若標(biāo)量a、b之間關(guān)系成立,則關(guān)系運(yùn)算結(jié)果為l;若標(biāo)量a、b之間關(guān)系
28、不成立,則關(guān)系結(jié)果為0。(2)比較的兩個(gè)變量是數(shù)組當(dāng)兩個(gè)維數(shù)相同的數(shù)組A和B比較時(shí),數(shù)組A、B比較的是相同位置的元素,按標(biāo)量的運(yùn)算規(guī)則逐個(gè)進(jìn)行。關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)和A相同的數(shù)組,它的元素由0和1組成。第43頁(yè),共73頁(yè)。(3)比較的兩個(gè)變量一個(gè)是數(shù)組A,另一個(gè)是標(biāo)量b把標(biāo)量b和數(shù)組A的每一個(gè)元素按標(biāo)量關(guān)系運(yùn)算規(guī)則逐個(gè)比較。關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)和數(shù)組A相同的數(shù)組,它是由0和l組成。(4)算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算的優(yōu)先級(jí)由高到低為算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算。第44頁(yè),共73頁(yè)。例4-9example4_9.m關(guān)系運(yùn)算示例A=1:9, B=9-A A = 1 2 3 4 5 6 7
29、8 9 B = 8 7 6 5 4 3 2 1 0tf=A4 %找出A中大于4的元素;0出現(xiàn)在A4的地方tf = 0 0 0 0 1 1 1 1 1第45頁(yè),共73頁(yè)。例4-9example4_9.m(續(xù))tf=(A=B) %找出A中的元素等于B中的元素tf = 0 0 0 0 0 0 0 0 0tf=B-(A2) %找出A2,并從B中減去所求得的結(jié)果向量tf = 8 7 5 4 3 2 1 0 -1第46頁(yè),共73頁(yè)。例4-13example4_13.m關(guān)系運(yùn)算示例A=3 4 8;9 0 2;5 3 7 輸入矩陣A A= 3 4 8 9 0 2 5 3 7B=4 4 1;7 8 4;5 1
30、7 輸入矩陣B B= 4 4 1 7 8 4 5 1 7第47頁(yè),共73頁(yè)。例4-13example4_13.m(續(xù)1)E=(A=B) 比較矩陣A和B是否相等 E= 0 1 0 0 0 0 1 0 1NE=(A=B) 比較矩陣A和B是否不等 NE= 1 0 1 1 1 1 0 1 0第48頁(yè),共73頁(yè)。例4-13example4_13.m(續(xù)2)A0=(A5) 標(biāo)出矩陣A中大于5的元素 A0= 0 0 1 1 0 0 0 0 1B0=(B=A=3 4 8;9 0 2;5 3 7 輸入矩陣A A= 3 4 8 9 0 2 5 3 7B=4 4 1;7 8 4;5 1 7 輸入矩陣B B= 4 4
31、 1 7 8 4 5 1 7第53頁(yè),共73頁(yè)。例4-16example4_16.m(續(xù)1)AB=A&B 對(duì)矩陣A和B求邏輯“與” AB= 1 1 1 1 0 1 1 1 1A_B=A|B 對(duì)矩陣A和B求邏輯“或” A_B= 1 1 1 1 1 1 1 1 1第54頁(yè),共73頁(yè)。例4-16example4_16.m(續(xù)2)C=A 對(duì)矩陣A求邏輯“非” C= 0 0 0 0 1 0 0 0 0cc=(A3)&(AA=1:9;B=9-A;tf=A4 %找出A大于的元素tf = 0 0 0 0 1 1 1 1 1tf=(A4) %對(duì)上面的結(jié)果取非,也就是1替換0,0替換1tf = 1 1 1 1 0
32、 0 0 0 0tf=(A2)&(Ax=linspace(0, 10, 100); % create datay=sin(x) ; % compute sinez=(y=0).*y ; % set negative values of sin(x) to zeroz=z+0.5*(yz=(xplot(x, z)xlabel(x), ylabel(z=f(x), title(A Discontinuous Signal)第57頁(yè),共73頁(yè)。三、關(guān)系與邏輯函數(shù)MATLAB提供了大量的其他關(guān)系與邏輯函數(shù),這些函數(shù)在交互運(yùn)算及進(jìn)行矩陣的標(biāo)化中非常有用,可以很方便地查找或替換矩陣中滿足一定條件的部分或所
33、有元素,如表4-8所示。函數(shù)名稱功能xor(A,B)異或運(yùn)算。A或B非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。any(A)如果在一個(gè)向量x中,任何元素是非零,返回1;矩陣x中的每一列有非零元素,返回1all(A)如果在一個(gè)向量x中,所有元素非零,返回1;矩陣x中的每一列所有元素非零,返回1isequel(A,B)ismember(A,B)第58頁(yè),共73頁(yè)。1、any函數(shù)這是一個(gè)判斷向量中元素是否有非0的函數(shù)。在矩陣處理時(shí),有時(shí)要判斷矩陣中的元素有無(wú)0值。如果在對(duì)矩陣進(jìn)行數(shù)組除時(shí),就要判斷作除數(shù)的矩陣是否有0元素。其調(diào)用格式為:(1)any(A) 若A是向量,如果A向量中至少
34、有一個(gè)元素為非0數(shù),any(A)將返回邏輯“真”,即為1,否則為0;若A為矩陣,函數(shù)any(A)按向量的列判斷,如果矩陣A的某列中存在某個(gè)元素為非0數(shù),則返回當(dāng)前列的結(jié)果為l;若A是多維矩陣,any(A)將第一個(gè)不是單維的維作為向量,按向量的運(yùn)算規(guī)則進(jìn)行判斷;(2)any(A,dim) 指定的第dim維作為向量進(jìn)行計(jì)算。如any(A,1)就是按向量A第一維進(jìn)行計(jì)算。第59頁(yè),共73頁(yè)。例4-25example4_25.m函數(shù)any的用法A=3 4 8;9 0 2;5 3 7 輸入矩陣A A= 3 4 8 9 0 2 5 3 7any(A) 邏輯運(yùn)算 ans= 1 1 1any(A,2) 對(duì)的二
35、維進(jìn)行邏輯運(yùn)算 ans= 1 1 1 第60頁(yè),共73頁(yè)。2、all函數(shù)【格式】:(1)all(A) 若A是向量,如果A向量中每個(gè)元素都是非0數(shù),all(A)將返回邏輯“真”,即為1,如果至少有一個(gè)元素為0,則返回值為0。若A為矩陣,函數(shù)a1l(A)按向量的列判斷,如果矩陣A的某列中所有元素都為非0數(shù),則返回當(dāng)前列的結(jié)果為1。若A是多維矩陣,all(A)將第一個(gè)不是單維的維作為向量,按向量的運(yùn)算規(guī)則進(jìn)行判斷;(2)all(A,dim) 指定的第dim維作為向量進(jìn)行計(jì)算。如all(A,1)就是按向量A第一維進(jìn)行計(jì)算。第61頁(yè),共73頁(yè)。例4-27example4_27.m判斷矩陣A=3 4 8;
36、9 0 2;5 3 7的所有元素是否都大于或等于1。A=3 4 8;9 0 2;5 3 7 輸入矩陣A A= 3 4 8 9 0 2 5 3 7all(all(A=1) 用函數(shù)all判斷 ans= 0A=1 看看矩陣A大于等于1的值 ans= l 1 1 1 0 1 1 1 1all(A=1) 用一次函數(shù)all判斷 ans= 1 0 1第62頁(yè),共73頁(yè)。四、判斷函數(shù)除了關(guān)系及邏輯函數(shù)外,MATLAB還提供了大量的判斷函數(shù),測(cè)試特殊值或條件的存在,返回邏輯值。這些命令在MATLAB程序設(shè)計(jì)和直接交互運(yùn)算中非常有用。函數(shù)名稱功能finite元素有限,返回真值。isempty參量為空,返回真值。i
37、sglobal參量是一個(gè)全局變量,返回真值。ishold當(dāng)前繪圖保持狀態(tài)是ON,返回真值。isieee計(jì)算機(jī)執(zhí)行IEEE算術(shù)運(yùn)算,返回真值。第63頁(yè),共73頁(yè)。判斷函數(shù)isinf元素?zé)o窮大,返回真值。isletter元素為字母,返回真值。isnan元素為不定值,返回真值。isreal參量無(wú)虛部,返回真值。isspace元素為空格字符,返回真值。isstr參量為一個(gè)字符串,返回真值。isstudentMATLAB為學(xué)生版,返回真值isunix計(jì)算機(jī)為UNIX系統(tǒng),返回真值。isvms計(jì)算機(jī)為VMS系統(tǒng),返回真值。第64頁(yè),共73頁(yè)。1、find函數(shù)函數(shù)find是找出向量或矩陣中非0元素的位置標(biāo)識(shí)。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)三層電梯
- 道勘課程設(shè)計(jì)范文
- 2025年度合同履行違約賠償合同4篇
- 二零二五年度門(mén)窗安裝與室外照明系統(tǒng)合同4篇
- 幼兒園墻面介紹課程設(shè)計(jì)
- 年度液壓件液力件市場(chǎng)分析及競(jìng)爭(zhēng)策略分析報(bào)告
- 2025年度食堂環(huán)境衛(wèi)生管理承包服務(wù)合同4篇
- 2025年度企業(yè)間財(cái)務(wù)信息保密協(xié)議范本模板2篇
- 2025年度食堂承包商服務(wù)品質(zhì)提升協(xié)議4篇
- 2025年度農(nóng)業(yè)機(jī)械設(shè)備采購(gòu)合同范本:農(nóng)機(jī)購(gòu)置合作協(xié)議3篇
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- DB32-T 4444-2023 單位消防安全管理規(guī)范
- 臨床三基考試題庫(kù)(附答案)
- 人員密集場(chǎng)所消防安全管理培訓(xùn)
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹(shù)脂耐腐蝕立式貯罐
- 員工信息登記表(標(biāo)準(zhǔn)版)
- 春節(jié)工地停工復(fù)工計(jì)劃安排( 共10篇)
- 新教材人教版高中物理選擇性必修第二冊(cè)全冊(cè)各章節(jié)課時(shí)練習(xí)題及章末測(cè)驗(yàn)含答案解析(安培力洛倫茲力電磁感應(yīng)交變電流等)
- 初級(jí)養(yǎng)老護(hù)理員培訓(xùn)全套
- 危重病人搶救登記表
- GB/T 41095-2021機(jī)械振動(dòng)選擇適當(dāng)?shù)臋C(jī)器振動(dòng)標(biāo)準(zhǔn)的方法
評(píng)論
0/150
提交評(píng)論