《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第5章_第1頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第5章_第2頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第5章_第3頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第5章_第4頁
《通信系統(tǒng)中MATLAB基礎(chǔ)與仿真應(yīng)用》課件-第5章_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章MATLAB程序設(shè)計基本知識5.1MATLAB的變量與表達(dá)式5.2字符串?dāng)?shù)組、單元數(shù)組和結(jié)構(gòu)數(shù)組5.3MATLAB的運算符和操作符5.4關(guān)系運算與邏輯運算5.5MATLAB程序結(jié)構(gòu)5.6程序流控制語句小結(jié)

習(xí)題

MATLAB作為一種高級應(yīng)用軟件,除了命令行操作的直接交互方式以外,還有自己的編程語言。為了充分發(fā)揮和體現(xiàn)MATLAB的功能,讀者還需掌握MATLAB的程序設(shè)計方法。本章詳細(xì)介紹MATLAB程序設(shè)計的基本知識,通過本章的學(xué)習(xí),讀者可以掌握關(guān)于MATLAB程序設(shè)計的方法,增強設(shè)計應(yīng)用程序的能力。

MATLAB不僅是一個功能強大的工具軟件,更是一種高效的編程語言。MATLAB的編程效率比常用的BASIC、C、FORTRAN和PASCAL等語言要高得多,而且容易維護。MATLAB軟件即MATLAB語言的編程環(huán)境,M文件也就是用MATLAB語言編寫的程序代碼文件。本章從語言的角度介紹編寫MATLAB基本程序的規(guī)則和方法。5.1MATLAB的變量與表達(dá)式

5.1.1MATLAB的變量與類型

1.變量命名規(guī)則

在MATLAB中,對變量(包括函數(shù))命名時應(yīng)遵循以下規(guī)則:

(1)變量名和函數(shù)名對字母的大小寫敏感,即MATLAB區(qū)分字母的大小寫。

(2)變量名的第一個字符必須是英文字母,最多可包括31個字符。

(3)變量名可由英文字母、數(shù)字和下劃線混合組成。

(4)變量名中不得包含空格(Backspace)和標(biāo)點,但可以有下連字符。如變量名my_var_330就是合法的。

2.局部變量和全局變量

通常每個函數(shù)體內(nèi)都有自己定義的變量,不能從其他函數(shù)和MATLAB工作空間訪問這些變量,這就是局部變量。如果要使某個變量在幾個函數(shù)及MATLAB函數(shù)中都能使用,則它就是全局變量。全局變量名應(yīng)盡可能大寫,并用“global”聲明。如果要在幾個函數(shù)和MATLAB工作空間中都能訪問一個全局變量,則需在每個函數(shù)和MATLAB工作空間中都聲明該變量是全局變量。全局變量要在函數(shù)體的變量賦值語句之前說明,整個函數(shù)以及所有對函數(shù)的遞歸調(diào)用都可以利用全局變量。注意:在實際編程中,應(yīng)盡量避免使用全局變量,因為全局變量的值一旦改動,則在其他包括該變量的函數(shù)中都將改變,這樣有可能會出現(xiàn)不可預(yù)見的情況。

3.永久變量

上面提到定義變量時,有些MATLAB的保留字符不能用,其中有一部分就是MATLAB的永久變量,也稱為預(yù)定義變量(PredefinedVariable)。每當(dāng)MATLAB啟動時,系統(tǒng)自動定義變量,駐留于內(nèi)存中,它們不會被命令clear清除(永久變量的名稱就源于此)。系統(tǒng)也可以為這些永久變量賦值,但所賦的值可以用clear命令清除,從而恢復(fù)系統(tǒng)預(yù)定義的值(預(yù)定義變量的名字就反映這個意思)。Who命令看不到永久變量(除非是適用的MATLAB3.0版)。MATLAB的永久變量如表5-1所示。注意:用戶在編寫指令和程序時,盡可能不對表5-1中所列永久變量名重新賦值,以免產(chǎn)生混淆。表5-1MATLAB的永久變量

【例5-1】無窮大的使用和作用。

y=1/0%無窮大的使用

1/y%無窮大的作用和ans變量的使用結(jié)果為:

Warning:Dividebyzero.

y=

Inf

ans=

0注意:在MATLAB中,像1/0這樣的操作不會引起程序執(zhí)行中斷,只是在給出警告信息的同時,用一個永久變量inf來表示,而且這個變量和其他變量一樣,可以在各種運算中發(fā)揮巨大的作用。對于y(inf)同樣可以當(dāng)作一個變量來使用,此特點在編程中有很大作用。5.1.2MATLAB基本表達(dá)式

MATLAB采用的是表達(dá)式語言,用戶輸入的語句由MATLAB系統(tǒng)解釋運行。用戶可以在MATLAB的命令窗口中鍵入命令,也可以在編輯器內(nèi)編寫應(yīng)用程序,MATLAB軟件對此命令或程序中的各條語句進(jìn)行翻譯,然后在MATLAB環(huán)境下對它進(jìn)行處理,最后返回運算結(jié)果。MATLAB語句由表達(dá)式和變量組成,有兩種最常見的語句形式:表達(dá)式變量=表達(dá)式

MATLAB書寫表達(dá)式的規(guī)則與“手寫算式”幾乎相同,具體規(guī)定為:

(1)表達(dá)式由變量名、運算符、數(shù)字和函數(shù)名組成。它在MATLAB中占有很重要的位置,幾乎所有的運算都必須借助表達(dá)式來進(jìn)行。

(2)表達(dá)式將按常規(guī)的優(yōu)先級從左至右執(zhí)行運算。

(3)優(yōu)先級的規(guī)定是:指數(shù)運算級別最高,乘除運算次之,加減運算級別最低。

(4)括號可以改變運算順序。

(5)書寫表達(dá)式時,賦值符“=”和運算符兩側(cè)允許有空格,以增加可讀性。但在復(fù)數(shù)或符號表達(dá)式中要盡量避免,以防出錯。

(6)表達(dá)式的末尾可加上“;”,也可以不加。有“;”時,MATLAB系統(tǒng)不顯示計算結(jié)果,而是直接把數(shù)值賦給變量,如果沒有用變量就無法看到結(jié)果;沒有“;”時,MATLAB系統(tǒng)將會在該條語句的下面直接顯示運算結(jié)果。在MATLAB語句的第一種形式中,表達(dá)式運算后產(chǎn)生的結(jié)果如果是矩陣或其他數(shù)值類型,則MATLAB系統(tǒng)將會自動賦給變量名ans,并顯示在屏幕上。ans是一個默認(rèn)的永久變量,它會在以后類似的操作中被自動覆蓋掉,所以重要的結(jié)果一定要記錄下來。也就是使用第二種形式。在MATLAB語句的第二種形式中,“=”右邊的表達(dá)式計算后產(chǎn)生的結(jié)果,MATLAB系統(tǒng)會自動賦給“=”左邊的變量,然后存入內(nèi)存中,并顯示在屏幕上。

MATLAB語言與C語言不同,它允許一次返回多個結(jié)果,這時“=”左邊是用“[]”括起來的變量列表,例如命令函數(shù):[X,Y,Z]=peaks;它返回了坐標(biāo)列向量X,Y,Z的值。

【例5-2】創(chuàng)建一個表達(dá)式。

x=(3*4^2+exp(sin(45)))/6

x=

8.39035.2字符串?dāng)?shù)組、單元數(shù)組和結(jié)構(gòu)數(shù)組

5.2.1MATLAB的數(shù)據(jù)結(jié)構(gòu)

MATLAB是一種面向數(shù)組(array)的編程語言,其數(shù)據(jù)類型的最大特點是每一種類型都以數(shù)組為基礎(chǔ),從數(shù)組中派生出來。事實上,MATLAB把每種類型的數(shù)據(jù)都作為數(shù)組來處理。在MATLAB7.0中,有6種基本的數(shù)據(jù)類型:char(字符)、double(雙精度數(shù)值)、sparse(稀疏數(shù)據(jù))、storage(存儲型)、cell(單元數(shù)組)和struct(結(jié)構(gòu))。數(shù)據(jù)類型間的關(guān)系如圖5-1所示。圖5-1MATLAB7.0的數(shù)據(jù)結(jié)構(gòu)說明:

·在圖5-1中,存儲型是一個虛擬數(shù)據(jù)類型,這是MATLAB5.3版以后新增的定義。它包括int8(8位整型)、unit8(無符號8位整型)、int16(16位整型)、unit16(無符號16位整型)、int32(32位整型)和unit32(無符號32位整型)。

·最常用的數(shù)據(jù)類型只有雙精度型和字符型,所有MATLAB計算都把數(shù)據(jù)當(dāng)作雙精度型進(jìn)行處理。

·其他數(shù)據(jù)類型只在一些特殊條件下使用。例如,無符號8位整型一般用于儲存圖像數(shù)據(jù);稀疏數(shù)據(jù)一般用于處理稀疏矩陣;單元數(shù)組和結(jié)構(gòu)數(shù)組一般用在大型程序中。

·存儲型數(shù)組一般只用于內(nèi)存的有效儲存,可對這些類型的數(shù)組進(jìn)行操作,但不能進(jìn)行任何數(shù)學(xué)運算,否則必須用double函數(shù)把它轉(zhuǎn)換為雙精度類型。

MATLAB的字符串?dāng)?shù)組(CharacterStringArray)、單元數(shù)組(CellArray)和結(jié)構(gòu)數(shù)組(StructureArray)之間以及與數(shù)值數(shù)組(NumericArray)之間的基本差別如表5-2所示。表5-2MATLAB中四種數(shù)據(jù)類型的比較5.2.2MATLAB字符串?dāng)?shù)組對于MATLAB編程來說,字符處理必不可少。對于字符串的使用應(yīng)符合以下規(guī)定:

·所有字符串都用單引號括起來。

·字符串中的每個字符都是字符串變量(矩陣或向量)中的一個元素。

·字符串中的字符以ASCII碼形式儲存并區(qū)分大小寫。用函數(shù)abs可以看到字符的ASCII碼。

MATLAB有強大的字符處理功能,其字符串處理函數(shù)如表5-3所示。表5-3字符串處理函數(shù)下面介紹幾種常用的字符串操作。

1.字符串?dāng)?shù)組的建立

1)直接賦值法建立字符串?dāng)?shù)組建立字符串時,可通過直接賦值先把待建的字符放在單引號中,然后直接賦值給變量。如:

a=′Thisisabook′

a=

Thisisabook

2)建立中文字符串?dāng)?shù)組創(chuàng)建中文字符串時,字符外邊的單引號對必須在英文狀態(tài)下輸入。與英文字符一樣,每個中文字符也占一個元素位置,但應(yīng)注意此時的ASCII大于256。如:

′A=中國長城′

A=中國長城

3)建立帶單引號的字符串當(dāng)字符串中的字符包含有(英文)單引號時,每個單引號符用連續(xù)的兩個單引號符表示。

B=′China′′中國′′′

B=

China′中國′

4)有效字符串連成長字符串字符串可以連接到一起組成更大的字符串,可以直接在中括號內(nèi)用逗號連接,也可以通過函數(shù)strcat連接。如:

ab=[A,′′,B,′.′]%第二個輸入是表示輸入空格字符串

ab=中國長城China′中國′

strcat(A,B)%函數(shù)strcat連接,忽略原字符串結(jié)尾處的空格

ans=中國長城China′中國′

5)多行字符串?dāng)?shù)組的直接創(chuàng)建在直接創(chuàng)建多行字符串?dāng)?shù)組時,要保證同一字符串?dāng)?shù)組的各行字符數(shù)相等,即保證各行等長。如果不等長,則用空格符來調(diào)節(jié)其長度,使它們彼此相等。如:

AB=[′中國′;′changcheng′]

AB=中國

changcheng

6)利用字符串操作函數(shù)創(chuàng)建字符串?dāng)?shù)組在MATLAB中,專用函數(shù)char、str2mat和strvcat用來創(chuàng)建多行字符串?dāng)?shù)組。在用這三個函數(shù)創(chuàng)建多行數(shù)組時,不必?fù)?dān)心每行字符是否相等,它們總會按最長行設(shè)置第二維的長度,其他行的尾部用空格填充。它們的調(diào)用格式為:

S=char(T1,T2,T3,…)

S=str2mat(T1,T2,T3,…)

S=strvcat(T1,T2,T3,…)上式中,T1、T2、T3是字符串,在輸入時,T1,T2,T3,…兩邊要加英文狀態(tài)下的單引號。

7)利用轉(zhuǎn)換函數(shù)建立字符串?dāng)?shù)組在MATLAB中,把數(shù)值數(shù)組轉(zhuǎn)換為字符串?dāng)?shù)組的常用函數(shù)為int2str、num2str和mat2str,其調(diào)用格式可用命令helpint2tre、helpnum2str和helpmat2str來查看。從MATLAB5.x版本以后,又增加了兩個命令char和double:函數(shù)命令char可把ASCII碼數(shù)組轉(zhuǎn)換為字符串?dāng)?shù)組;命令double可把其他任何數(shù)組轉(zhuǎn)換為數(shù)值數(shù)組。注意:中文字符能被命令char和double正確轉(zhuǎn)化。

2.字符串?dāng)?shù)組的元素標(biāo)識

在一維字符串?dāng)?shù)組中,MATLAB按從左向右的順序用自然數(shù)數(shù)碼(1,2,3等)標(biāo)識字符位置,其操作也用標(biāo)識來進(jìn)行。5.2.3MATLAB單元數(shù)組單元數(shù)組(CellArray)是一種比較特殊的MATLAB數(shù)組,該數(shù)組的基本成分是單元,它的每個元素都是一個單元,單元中包含其他MATLAB數(shù)組。每個單元本身在數(shù)組中是平等的,它們只能以下標(biāo)區(qū)分。單元內(nèi)可以存放任何類型、任何大小的數(shù)組,而且同一單元數(shù)組內(nèi)各單元的內(nèi)容可以不同。同數(shù)值數(shù)組一樣,單元數(shù)組的維數(shù)不受限制,可以是一維、二維或更高維。單元數(shù)組對單元的編址方法有單下標(biāo)編址和全下標(biāo)編址。對于單元數(shù)組來說,單元和單元里的內(nèi)容是兩個不同的范疇。因此,尋訪單元和尋訪單元內(nèi)容是兩種不同的操作。以二維單元數(shù)組為例,A(2,3)是指A單元數(shù)組中的第二行第三列單元元素;而A{2,3}是指A單元數(shù)組中的第二行第三列單元中所允許存或取的內(nèi)容。兩者的區(qū)別僅是用圓括號還是用花括號。

1.單元數(shù)組的建立

在MATLAB中,有三種方法來建立單元數(shù)組。

1)利用賦值語句建立單元數(shù)組利用賦值語句建立單元數(shù)組又有兩種不同的方式:

(1)用小括號括起單元的下標(biāo),在賦值語句的右側(cè)用花括號括起單元的內(nèi)容。如:

A(1,1)={′matlab′};%單元(1,1),字符串

A(1,2)={7.0}; %單元(1,2),標(biāo)量,記錄版本號

A(2,1)={′矩陣′}; %單元(2,1),中文字符串

A(2,2)={[234;2314;548]};%單元(2,2),矩陣

A%列出矩陣A

A=%結(jié)果

′matlab′[7]

′矩陣′[3x3double]

(2)用花括號括起單元的下標(biāo),在賦值語句的右側(cè)直接指定單元的內(nèi)容。如上面命令可寫成:

A{1,1}=′matlab′;%單元(1,1)中的內(nèi)容

A{1,2}=7.0;%單元(1,2)中的內(nèi)容

A{2,1}=′矩陣′;%單元(2,1)中的內(nèi)容

A{2,2}=[234;2314;548];%單元(2,2)中的內(nèi)容

2)利用單元數(shù)組法(花括號)建立單元數(shù)組也就是在花括號中直接賦值,單元與單元之間用逗號、空格或分號隔開。使用如下語句也可得出與上面相同的單元數(shù)組:

A={′matlab′,7.0;′矩陣′,[234;2314;548]}或

A={′matlab′7.0;′矩陣′[234;2314;548]}

上兩式中,7.0后面的分號表示數(shù)組另起一行,不能用別的符號代替。

3)利用函數(shù)cell建立單元數(shù)組

cell函數(shù)用來預(yù)分配指定大小的單元數(shù)組,其調(diào)用格式為:

(1)c=cell(n):建立n×n的單元數(shù)組,單元是空矩陣。

(2)C=cell(m,n)或cell([m,n]):建立m×n的單元數(shù)組,單元是空矩陣。

(3)C=cell(m,n,p,…)或cell([mnp…]):建立m×n×p×…的單元數(shù)組,單元是空矩陣。

(4)C=cell(size(A)):建立和A大小相同的單元數(shù)組。

2.單元數(shù)組的訪問和顯示

在MATLAB中,單元數(shù)組的訪問有兩種方式:

(1)用內(nèi)容下標(biāo)(花括號)訪問單元內(nèi)容。如上面的單元數(shù)組A:

A{1,1}%訪問第(1,1)個單元中的內(nèi)容

ans=

matlab

(2)用單元下標(biāo)(小括號)訪問單元子集。又如數(shù)組A:

A(1,1)%訪問第(1,1)個單元

ans=

′matlab′

b=A(1:2,1)%把單元數(shù)組A中第一列的兩個單元賦給b,b也成為單元數(shù)組

b=

′matlab′

′矩陣′

單元數(shù)組中的內(nèi)容一般以壓縮的形式顯示。為了形象地查看單元數(shù)組中的內(nèi)容,MATLAB提供了函數(shù)cellplot,而函數(shù)celldisp只是顯示單元數(shù)組的全部或部分內(nèi)容。函數(shù)cellplot的調(diào)用格式為:

H=cellplot(C,′legend′):式中第二個輸入?yún)?shù)用于實現(xiàn)色彩圖例,該命令用大白方格表示單元,用小方格表示所存的數(shù)組元素,色彩表示數(shù)據(jù)屬性。如數(shù)組A用圖形方式顯示為:

cellplot(A,′legend′)結(jié)果如圖5-2所示。圖5-2用圖形方式顯示單元數(shù)組

3.單元數(shù)組的操作

在MATLAB中,可對單元數(shù)組進(jìn)行一系列操作,如:·把單元(注意,不是單元內(nèi)容)設(shè)置為空來刪除該單元數(shù)組中的單元。

·用函數(shù)reshape改變單元數(shù)組的大小,但要注意改變形狀時數(shù)組中的元素個數(shù)。

·單元數(shù)組也可像一般數(shù)組那樣用方括號進(jìn)行連接。

·單元數(shù)組可代替用逗號或空格分隔的變量列表。

·如果數(shù)組中的多個單元是用花括號和冒號一起引用的,MATLAB則把每個單元的內(nèi)容看做一個獨立的變量。

5.2.4MATLAB結(jié)構(gòu)數(shù)組

MATLAB中的結(jié)構(gòu)數(shù)組(StructureArray)與單元數(shù)組一樣,能在一個數(shù)組存放各類數(shù)組。從一定意義上講,結(jié)構(gòu)數(shù)組組織數(shù)據(jù)的能力比單元數(shù)組更強、更富于變化。結(jié)構(gòu)數(shù)組的基本成分是結(jié)構(gòu)(Structure),數(shù)組中的每個結(jié)構(gòu)相等,它們以下標(biāo)區(qū)分。結(jié)構(gòu)必須在劃分“域”后才能使用。數(shù)據(jù)不能直接存放在結(jié)構(gòu)上,而只能存放在域中。結(jié)構(gòu)的域可以存放任何類型、任何大小的數(shù)組,而且不同結(jié)構(gòu)的同名域中存放的內(nèi)容可以不同。

1.結(jié)構(gòu)數(shù)組的建立和訪問

1)直接建立結(jié)構(gòu)數(shù)組此方法直接建立結(jié)構(gòu)和各個域,同時給各域賦值(也可以不賦值),結(jié)構(gòu)和域之間用點連接。在訪問結(jié)構(gòu)數(shù)組的各個域時,也是“結(jié)構(gòu)數(shù)組名.域名”的格式。當(dāng)結(jié)構(gòu)帶有子域時,需完整地鍵入結(jié)構(gòu)名、域名、子域名,才能顯示域中的內(nèi)容。結(jié)構(gòu)數(shù)組的各個域可以按照其本身的數(shù)據(jù)類型進(jìn)行相應(yīng)的各種運算。下面我們通過一個例子來說明如何創(chuàng)建和訪問結(jié)構(gòu)數(shù)組。

【例5-3】建立一橋梁混凝土試件強度的結(jié)構(gòu)數(shù)組。

bridge.Name=′XX大橋′;%域名為name,中文字符串,記錄橋名

bridge.position=′頂板′;%域名為position,中文字符串,記錄試件位置

bridge.position.group=′2組′;%子域名為group,字符串,記錄組數(shù)

bridge.position.value=[28.429.430.1;26.829.028.8];%子域名為value,記錄試件強度

bridge%得到結(jié)構(gòu)數(shù)組的內(nèi)容如下

bridge=

name:′XX大橋′

position:[1x1struct]

bridge.position%顯示域position中的內(nèi)容

ans=

group:′2組′

value:[2x3double]

bridge.position.value%顯示域value中的內(nèi)容

ans=

28.400029.400030.1000

26.800029.000028.8000

2)用函數(shù)structure命令創(chuàng)建結(jié)構(gòu)數(shù)組除了上面所講述的直接建立結(jié)構(gòu)數(shù)組外,MATLAB還有一個專門建立結(jié)構(gòu)數(shù)組的函數(shù)structue。該函數(shù)命令的調(diào)用格式為:

S=struct(′field1′,values1,′field2′,values2,…)用指定的域名和各個域的數(shù)據(jù)建立結(jié)構(gòu)數(shù)組。如果數(shù)組中包含多個結(jié)構(gòu),而且各個結(jié)構(gòu)域中的數(shù)據(jù)不盡相同,則域的數(shù)據(jù)valuesl、values2…必須是單元數(shù)組,建立的結(jié)構(gòu)數(shù)組和單元數(shù)組的大小相同。如:

s=struct(′type′,{′big′,′little′},′color′,′red′,′x′,{34})%建立結(jié)構(gòu)數(shù)組結(jié)果為:

s=

1x2structarraywithfields:

type

color

x在MATLAB中,對結(jié)構(gòu)數(shù)組域中內(nèi)容的調(diào)取和設(shè)置可通過函數(shù)getfield和setfield進(jìn)行;利用函數(shù)rmfield可以刪除結(jié)構(gòu)的域;利用函數(shù)struct2cell和cell2struct可以進(jìn)行結(jié)構(gòu)數(shù)組和單元數(shù)組之間的轉(zhuǎn)換。這些命令的調(diào)用格式和使用可參看MATLAB的幫助文件。

2.數(shù)據(jù)的分配

MATLAB中的函數(shù)deal可把輸入數(shù)據(jù)分配給輸出數(shù)據(jù),其調(diào)用格式為:[A,B,C,…]=deal(X,Y,Z,…);等價于A=X,B=Y,C=Z,…[A,B,C,…]=deaL(X);等價于A=X,B=X,C=X,…這個函數(shù)對于結(jié)構(gòu)和單元數(shù)組很有用。下面舉一個例子來說明:

sys={rand(3)one(3,1)eye(3)zeros(3,1)};%單元數(shù)組sys

[a,b,c,d]=deal(sys{:});%把sys中的每個“單元”分配給相對應(yīng)的變量

a=

0.95010.48600.4565

0.23110.89130.0185

0.60680.76210.8214

b=

1

1

1

c=

100

010

001

d=

0

0

0

注意:例中的sys{:}和sys不同,sys是將整個單元數(shù)組分配給每個變量。5.3MATLAB的運算符與操作符在MATLAB中,一般的運算符和操作符構(gòu)成了運算最基本的操作指令,例如加、減、乘、除和乘方等運算,這些指令幾乎在所有計算機語言中都有,并且大同小異。在MATLAB中,幾乎所有的運算都是以矩陣為基本的運算單元,這與大多數(shù)計算機語言不同,也是MATLAB的顯著特點。

5.3.1運算符在MATLAB中,最常見的運算符如表5-4所示。表5-4MATLAB的常用運算符注意:在矩陣運算中,左除和右除有一定的區(qū)別。5.3.2操作符

在MATLAB中,操作符在資料構(gòu)造和運算中非常有用。各操作符的含義如表5-5所示。表5-5中幾個常用操作符解釋如下:

·冒號“:”——冒號在矩陣的構(gòu)造和運算中極為實用,它可以用來產(chǎn)生向量,用作矩陣的下標(biāo),部分地選擇矩陣元素,進(jìn)行行循環(huán)操作等。

·連續(xù)號“…”——如果一個命令很長,一行容不下,則可以在一行的末尾加三個或更多的點,表示此行未完,而在下一行繼續(xù)。

·分號“;”——在方括號中,分號表示矩陣中行的結(jié)尾。如用在每行的結(jié)尾,則MATLAB不會顯示該行運算的結(jié)果。此功能可以用在M文件中控制命令的顯示,減少輸出篇幅。表5-5MATLAB的操作符5.4關(guān)系運算與邏輯運算

在程序流控制中,常有一些邏輯和模糊邏輯的推理,需要對其作出“是真、是假”的回答。為此,MATLAB提供了強大的關(guān)系運算和邏輯運算。雖然其他程序語言中也有類似的關(guān)系和邏輯運算,但MATLAB作為一種比較完善的科學(xué)計算環(huán)境,有其自身的特點。在關(guān)系和邏輯運算中,MATLAB有以下規(guī)定:

·在所有的關(guān)系表達(dá)式和邏輯表達(dá)式中,輸入的任何非0數(shù)都被看做是“邏輯真”,而只有0才被認(rèn)為是“邏輯假”。

·所有關(guān)系表達(dá)式和邏輯表達(dá)式的計算結(jié)果是一個由0和1組成的“邏輯數(shù)組(LogicalArray)”,數(shù)組中的1表示“真”,0表示“假”。

·邏輯數(shù)組是一種特殊的數(shù)值數(shù)組,與“數(shù)值類”有關(guān)的操作和函數(shù)對它也適用;但它又不同于普通的“數(shù)值”,它還表示對事物的判斷結(jié)論“真”與“假”,有其自身的特殊用途。

5.4.1關(guān)系運算

MATLAB關(guān)系操作符用來比較兩個同樣大小的數(shù)組,或用來比較一個數(shù)組和一個標(biāo)量。MATLAB關(guān)系操作符如表5-6所示,其中包括所有常用的比較操作。表5-6關(guān)系操作符

MATLAB的關(guān)系操作符的運算法則:

(1)當(dāng)兩個變量是標(biāo)量a和b時,

·若a、b之間關(guān)系成立,則關(guān)系運算結(jié)果為1;

·若a、b之間關(guān)系不成立,則關(guān)系運算結(jié)果為0;

·當(dāng)兩個維數(shù)相同的數(shù)組A和B進(jìn)行比較時,數(shù)組A、B比較的是相同位置的元素,按標(biāo)量的運算規(guī)則逐個進(jìn)行。關(guān)系運算的結(jié)果是一個維數(shù)和A相同的數(shù)組,它的元素由0和1組成。(2)當(dāng)一個數(shù)組A和一個標(biāo)量b進(jìn)行比較時,把標(biāo)量b和數(shù)組A的每一個元素按標(biāo)量關(guān)系運算規(guī)則逐個比較。關(guān)系運算的結(jié)果是一個維數(shù)和數(shù)組A相同的數(shù)組,它是由0和1組成。

(3)優(yōu)先級由高到低為算術(shù)運算、關(guān)系運算和邏輯運算。

【例5-4】關(guān)系運算示例。

A=[348;902;537]%輸入矩陣A

B=[441;784;517]%輸入矩陣B

A=[HJ*5/8]

3

4

8

9

0

2

5

3

7

B=

4

4

1

7

8

4

5

1

7

E=(A==B)%比較矩陣A和B是否相等

E=

0

1

0

0

0

0

1

0

1

NE=(A~=B)%比較矩陣A和B是否不等

NE=

1

0

1

1

1

1

0

1

0

A0=(A>5)%標(biāo)出矩陣A中大于5的元素

A0=

0

0

1

1

0

0

0

0

1

B0=(B<=6)%標(biāo)出矩陣B中小于等于6的元素

B0=

1

1

1

0

0

1

1

1

0

5.4.2邏輯運算邏輯運算和邏輯函數(shù)在計算機語言中普遍存在。邏輯運算符提供了一種組合或否定關(guān)系表達(dá)式。在MATLAB中邏輯操作符如表5-7所示。下面是MATLAB中邏輯操作符的運算法則:

(1)在邏輯運算中,非0元素的邏輯量為“真”,用1表示;0元素的邏輯量為“假”,用0表示。

(2)如果兩個標(biāo)量a和b運算,則:

·a&b:當(dāng)a、b全是非0時,運算結(jié)果是1,否則是0;

·a|b:當(dāng)a、b中只要有一個非0,運算結(jié)果為1;

·~a:當(dāng)a是0時,運算結(jié)果是1,否則是0。表5-7邏輯操作符

(3)如果兩個維數(shù)相同的數(shù)組A和B參與運算,則將數(shù)組A和B相同位置上的元素按標(biāo)量的運算規(guī)則逐個進(jìn)行運算。邏輯運算的結(jié)果是返回一個由0和1組成的與數(shù)組A具有同樣維數(shù)的數(shù)組。

(4)如果標(biāo)量b和數(shù)組A參與運算,則:

·將標(biāo)量b和數(shù)組A中的每個元素進(jìn)行邏輯運算。邏輯運算的結(jié)果是返回一個由0和1組成的與數(shù)組A具有同樣維數(shù)的數(shù)組;

·邏輯“非”運算是一元運算符,服從數(shù)組運算規(guī)則;

·在邏輯“與”、“或”、“非”三者中,“與”與“或”具有相同的優(yōu)先級,從左向右依次執(zhí)行,而都低于“非”的優(yōu)先級。

(5)通過增加“()”可以改變各操作符之間的優(yōu)先級。下面通過例5-5來理解各個邏輯操作符的運算法則。

【例5-5】邏輯操作符的用法。

A=[348;902;537]%輸入矩陣A

A=

3

4

8

9

0

2

5

3

7

B=[441;784;517]%輸入矩陣B

B=

4

4

1

7

8

4

5

1

7

AB=A&B%對矩陣A和B求邏輯“與”

AB=

1

1

1

1

0

1

1

1

1

A_B==A|B%對矩陣A和B求邏輯“或”

AB=

1

1

1

1

1

1

1

1

1

C=~A%對矩陣B求邏輯“非”

C=

0

0

0

0

1

0

0

0

0

cc=(A>3)&(A<6)%求矩陣A中大于3小于6的元素

cc=

0

1

0

0

0

0

1

0

0

5.4.3關(guān)系與邏輯函數(shù)

除了上面的關(guān)系與邏輯操作符外,MATLAB還提供了大量的其他關(guān)系與邏輯函數(shù)。這些函數(shù)在交互運算及進(jìn)行矩陣的標(biāo)化中非常有用,可以很方便地查找或替換矩陣中滿足一定條件的部分或所有元素,如表5-8所示。表5-8關(guān)系與邏輯函數(shù)下面詳細(xì)闡述一些常用函數(shù)的用法。

1)any函數(shù)這是一個判斷向量中元素是否有非0的函數(shù)。在矩陣處理時,有時要判斷矩陣中的元素有無0值。在對矩陣進(jìn)行數(shù)組除時,就要判斷作除數(shù)的矩陣是否有0元素。其調(diào)用格式為:

·any(A):若A是向量,且A向量中至少有一個元素為非0數(shù),則any(A)將返回邏輯“真”,即為1,否則為0。若A為矩陣,函數(shù)any(A)按向量的列判斷,且矩陣A的某列中存在某個元素為非0數(shù),則返回當(dāng)前列的結(jié)果為1。若A是多維矩陣,則any(A)將第一個不是單維的維作為向量,按向量的運算規(guī)則進(jìn)行判斷。

·any(A,dim): 指定第dim維作為向量進(jìn)行計算。如any(A,1)就是按向量A第一維進(jìn)行計算。

【例5-6】函數(shù)any的用法。

A=[348;902;537]%輸入矩陣A

A=

3

4

8

9

0

2

5

3

7

any(A)%邏輯運算

ans=

1

1

1

any(A,2) %對第二維進(jìn)行邏輯運算

ans=

1

1

1

2)all函數(shù)

·all(A):若A是向量,如果A向量中每個元素都是非0數(shù),則all(A)將返回邏輯“真”,即為1;如果至少有一個元素為0,則返回值為0。若A為矩陣,函數(shù)all(A)按向量的列判斷,如果矩陣A的某列中所有元素都為非0數(shù),則返回當(dāng)前列的結(jié)果為1。若A是多維矩陣,則all(A)將第一個不是單維的維作為向量,接向量的運算規(guī)則進(jìn)行判斷。

·all(A,dim):指定第dim維作為向量進(jìn)行計算。如all(A,1)就是按向量A第一維進(jìn)行計算。下面舉例說明函數(shù)all的用法。

【例5-7】判斷矩陣A=[348;902;537]的所有元素是否都大于或等于1。

A=[348;902;537]%輸入矩陣A

A=

3

4

8

9

0

2

5

3

7

all(all(A>=l))%用函數(shù)all判斷

ans=

0

A>=1%顯示矩陣A大于等于1的值

ans=

1

1

1

1

1

1

1

1

1

all(A>=l)%用一次函數(shù)all進(jìn)行判斷

ans=

1

0

1從本例可以看出,函數(shù)的某些查找或判斷功能非常強大,要仔細(xì)體會all函數(shù)的用法。除了這些關(guān)系與邏輯函數(shù)外,MATLAB還提供了大量的判斷函數(shù),以測試特殊值或條件的存在,返回邏輯值。判斷函數(shù)及其功能如表5-9所示。表5-9判斷函數(shù)這些命令在MATLAB程序設(shè)計和直接交互運算中非常有用。用戶可以從指南或聯(lián)機幫助中找到具體的調(diào)用格式。本書只將函數(shù)find作為例子進(jìn)行較為詳細(xì)地介紹,其余不再作具體解釋。函數(shù)find是找出向量或矩陣中非0元素的位置標(biāo)識。在許多情況下,都需對矩陣或向量中某一特定條件下的元素位置進(jìn)行定位,例如將某一矩陣中為0的元素位置取1。如果這個矩陣的元素非常多,則手工修改非常麻煩,而靈活運用find函數(shù)和各種邏輯關(guān)系運算就可以實現(xiàn)絕大多數(shù)條件的元素定位。下面是其調(diào)用格式:

·I=find(x):返回向量或矩陣x中的所有非0元素的位置標(biāo)識組成的向量,如果沒有非0元素,則返回空值。

·[I,J]=find(x):返回矩陣x的非0元素行和列的標(biāo)識。其中I是行標(biāo)識,J是列標(biāo)識。此函數(shù)經(jīng)常用在稀疏矩陣中。

·[I,J,V]=find(x):返回矩陣x中的非0元素行和列的標(biāo)識。其中I是行標(biāo)識,J是列標(biāo)識,同時,將相應(yīng)的非0元素的值放入列向量V中。即I和J的值與[I,J]=find(x)相同,只是增加了非0元素的值這一項。下面舉例來說明該函數(shù)的用法。

【例5-8】函數(shù)find的用法。

A=[048;902;537]%輸入矩陣A

A=

048

902

537

find(A)%查找矩陣A中的非零元素位置

ans=%結(jié)果顯示,非零元素的標(biāo)識是按列進(jìn)行的,即從第2列開始,數(shù)完該列后再數(shù)第3列,依次數(shù)下去

2

3

4

6

7

8

9[I,J]=find(A)%查找矩陣A中非零元素位置,并列出其具體位置1=

2

3

1

3

1

2

3

J=

1

1

2

2

3

3

3[I,J,V]=find(A)%標(biāo)出矩陣A中非零數(shù)值的位置,并寫出非零數(shù)值

I=[HJ*5/8]

2

3

1

3

1

2

3

J=

1

1

2

2

3

3

3

V=%指出非零元素的數(shù)值

9

5

4

3

8

2

7

find(A<3)%找出矩陣A中小于3的元素的位置

ans=

1

5

8

A(find(A==0))=-5%將矩陣A中等于0的元素替換為-5

A=

-5

4

8

9

-5

2

5

3

7

C=[304;075;123]%輸入矩陣C

C=

3

0

4

0

7

5

1

2

3

A(find(A==-5))=C(find(A==-5))%將矩陣A中等于-5的元素的值替換成矩陣C中相應(yīng)位置上的元素,即部分矩陣元素值的替換

A=

3

4

8

9

7

2

5

3

7

A(find(A==9))=[]%將矩陣A中等于9的元素刪除

A=

3

5

4

7

3

8

2

75.5MATLAB程序結(jié)構(gòu)

計算機編程語言允許程序員根據(jù)某些結(jié)構(gòu)來控制程序的執(zhí)行次序。MATLAB和大多數(shù)計算機語言一樣,提供了設(shè)計程序所必須的程序結(jié)構(gòu),即順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu)。在MATLAB中,循環(huán)結(jié)構(gòu)由while和for語句實現(xiàn),分支結(jié)構(gòu)由if語句實現(xiàn)。5.5.1順序結(jié)構(gòu)

順序結(jié)構(gòu)就是依照順序執(zhí)行程序的各條語句。語句在程序文件中的位置反映了程序的執(zhí)行順序。MATLAB的語句是由表達(dá)式構(gòu)成的。若程序是命令文件,則在程序運行完后,中間變量都予以保留;若程序是函數(shù)文件,則在程序運行完后,中間變量將被全部刪除。前面幾章所舉的例子大多是順序結(jié)構(gòu),這里不再舉例詳述。5.5.2循環(huán)結(jié)構(gòu)

循環(huán)是計算機解決問題的主要手段,在很多實際問題中會遇到許多有規(guī)律的重復(fù)運算和對某些語句的重復(fù)執(zhí)行。在循環(huán)結(jié)構(gòu)中,被重復(fù)執(zhí)行的那一組語句就是循環(huán)體。它每循環(huán)一次,都需要作出是繼續(xù)重復(fù)或是停止的判斷,這個判斷所依據(jù)的條件就是所謂的循環(huán)條件。

MATLAB語言提供了兩種循環(huán)方式:for-end循環(huán)和while-end循環(huán)。

1.for-end循環(huán)

for循環(huán)將循環(huán)體中的語句以固定和預(yù)定的次數(shù)進(jìn)行重復(fù)執(zhí)行。循環(huán)的次數(shù)一般情況下是已知的,除非用其他語句將循環(huán)提前結(jié)束。for循環(huán)的語法格式為

forx=array

(commands)

end

for指令后面的變量x稱為循環(huán)變量,commands為循環(huán)體。for指令后面的數(shù)組array列數(shù)決定了循環(huán)體被重復(fù)執(zhí)行的次數(shù)。也就是說,循環(huán)變量依次取數(shù)組的各列,對于每個變量值,循環(huán)體被執(zhí)行一次。數(shù)組array可以是整數(shù)、小數(shù),還可以是負(fù)數(shù),也可以是字符串、字符串矩陣或字符串組成的單元陣。不論它們?nèi)『沃?,都必須滿足工程數(shù)組(向量)的條件,x將窮盡此數(shù)組的取值,但作為取值的單元是有所不同的,如字符串是以每個字符作為取值單元,單元陣是以單元陣的元素作為取值單元,數(shù)值矩陣是以列向量作為取值單元等。

【例5-9】一個簡單的for循環(huán)示例。

forI=1:10

A(I)=1/(I+l)

end

A=

Columns1through7′

0.50000.33330.25000.20000.16670.14290.1250

Columns8through10

0.11110.100000.0909說明:

·for循環(huán)不會因在循環(huán)體內(nèi)對循環(huán)變量重新賦值而終止?!ふZ句1:10是一個標(biāo)準(zhǔn)的MATLAB數(shù)組創(chuàng)建語句。在for后面的表達(dá)式中的數(shù)組可以是任何合法的MATLAB數(shù)組。

·for循環(huán)結(jié)構(gòu)可按需要嵌套使用。為了得到高效代碼,應(yīng)盡量提高代碼的向量化程度,避免使用循環(huán)結(jié)構(gòu)。換而言之,如有一個等效的數(shù)組方法來解給定的問題時,應(yīng)盡量避免使用for循環(huán)。如例5-9,可以用下面的語句重寫:

i=1:10

A(i)=1./(i+1)

A=

Columns1through7

0.50000.33330.25000.20000.16670.14290.1250

Columns8through10

0.11110.100000.0909兩種方法得出同樣的結(jié)果,但后者執(zhí)行的速度更快、更直觀,輸入較少。技巧:為了得到最快的運算速度,在循環(huán)指令之前應(yīng)盡量對數(shù)組進(jìn)行預(yù)定義。在例5-9中的第一種情況下,for循環(huán)體內(nèi)每執(zhí)行一次命令,變量i增加1,這就使MATLAB每通過一次循環(huán)就要花費時間,對變量i就要分配更多的內(nèi)存空間。為此,例5-9中的程序可改為:

i=1:10

A=zeros(1,10);

fori=1:10

A(i)=1./(i+1)

end此時程序只需對A(i)進(jìn)行改變。

2.while-end循環(huán)

while循環(huán)是將循環(huán)體中的語句循環(huán)執(zhí)行不定次數(shù)。其語法形式為:

whileexpression

statements

end

在while循環(huán)結(jié)構(gòu)中,statements是循環(huán)體。當(dāng)MATLAB碰到while指令時,首先檢測表達(dá)式expression的值,如果其值為邏輯真(非0),則執(zhí)行循環(huán)體的內(nèi)容,執(zhí)行后再判斷expressions是否為真,若表達(dá)式的值仍為真,則循環(huán)繼續(xù)進(jìn)行;一旦表達(dá)式的值為假,就結(jié)束循環(huán)。

【例5-10】用while循環(huán)計算1~100之間整數(shù)的和。

Sum=0;

i=1;

whilei<=100

sum=sum+i;

i=i+1;

end

sum

sum=

5050說明:

·while循環(huán)和for循環(huán)的區(qū)別在于,while循環(huán)結(jié)構(gòu)的循環(huán)體被執(zhí)行的次數(shù)不確定,而for循環(huán)結(jié)構(gòu)中循環(huán)體的執(zhí)行次數(shù)確定。

·一般情況下,表達(dá)式的值都是標(biāo)量,但是,MATLAB允許它是一個數(shù)組,此時只有當(dāng)該數(shù)組所有元素均為真時,MATLAB才會執(zhí)行循環(huán)體。

·如果while指令后的表達(dá)式為空數(shù)組,則MATLAB認(rèn)為表達(dá)式值為假而不執(zhí)行循環(huán)體。5.5.3分支結(jié)構(gòu)

在計算中常常要根據(jù)不同的條件來執(zhí)行不同的語句,當(dāng)某些條件滿足時,只執(zhí)行其中的某一條或某幾條命令,在這種情況下要用到分支結(jié)構(gòu)語句。在MATLAB中提供了兩種分支語句,即if-else-end和switch-case-end語句,它們各有特點。1.if-else-end分支結(jié)構(gòu)

if-else-end指令為程序流提供了一種分支結(jié)構(gòu),它有多種形式,其中最簡單的調(diào)用形式為:

ifexpression

statements

end

if后面的expression是表達(dá)式,若邏輯表達(dá)式的值為真,則執(zhí)行該結(jié)構(gòu)中的執(zhí)行語句內(nèi)容,執(zhí)行完后繼續(xù)向下進(jìn)行;若邏輯表達(dá)式的值為假,則跳過結(jié)構(gòu)中的執(zhí)行語句繼續(xù)向下進(jìn)行。

【例5-11】折扣問題。

book=20;

number=40;

sums=0.0;

ifnumber>=30

sums=book*number*0.7;

end

sums

sums=

560

當(dāng)遇到有兩種選擇時,MATLAB將采用下面的結(jié)構(gòu):

ifexpression

statements1

else

statements2

end在此結(jié)構(gòu)中,statements1和statements2是語句1和語句2。此種調(diào)用格式的執(zhí)行方式為:如果邏輯表達(dá)式的值為“真”,則執(zhí)行語句1,跳過語句2向下執(zhí)行;如果邏輯表達(dá)式的值為“假”,則執(zhí)行語句2,然后向下繼續(xù)執(zhí)行。當(dāng)選擇項多于兩個時,MATLAB將采用下面的結(jié)構(gòu):

ifexpression1

statements1

elseifexpression2

statements2

else

statementsn

end

此種調(diào)用格式的執(zhí)行方式為:如果邏輯表達(dá)式1的值為“真”,則執(zhí)行語句1,然后結(jié)束此結(jié)構(gòu);如果為“假”,則判斷邏輯表達(dá)式2的值是否為真,如果為真,則執(zhí)行語句2,然后結(jié)束此結(jié)構(gòu);否則向下執(zhí)行邏輯表達(dá)式3……依次類推?!旅媾e一個例子來具體說明它們的用法。

【例5-12】繪出函數(shù)的圖像。其程序為:

x=-3:0.1:3;

ifx>=1

y=2*x.^2+1;

plot(x,y)′

elseif-1<x<1

y=5;.

plot(x,y)

else

y=-x.^3;

plot(x,y)

end其執(zhí)行結(jié)果如圖5-3所示。圖5-3編程繪制函數(shù)圖像

2.switch-case-end分支結(jié)構(gòu)

switch語句是多分支選擇語句,雖然在某些情況下其功能可以由if語句的多層嵌套來完成,但是會使程序變得復(fù)雜和難以修改,而用switch語句構(gòu)造多分支選擇結(jié)構(gòu)時就顯得更加簡單明了、容易理解。switch語句的一般調(diào)用格式為:

switchswitch_expr

casecase_expr

statement,...,statement

case{case_expr1,case_expr2,case_expr3,…}

statement,...,statement

otherwise,

statetment,...,statement

end…此種格式的執(zhí)行方式為:

·switch指令后面的表達(dá)式可以為任何類型,如字符串和標(biāo)量等。對于標(biāo)量,可按規(guī)則:表達(dá)式值==檢測值i;而對于字符串,MATLAB將調(diào)用函數(shù)stremp來完成比較:stremp(表達(dá)式,檢測值i)。有時表達(dá)式還可以是單元數(shù)組,此時MATLAB將把表達(dá)式的值和單元數(shù)組中的所有元素進(jìn)行比較,如果單元數(shù)組中的某個元素和表達(dá)式的值相等,則MATLAB認(rèn)為此次比較結(jié)果為真,從而執(zhí)行與該檢測值相應(yīng)的語句。

·當(dāng)遇到switch語句時,MATLAB將表達(dá)式的值依次和各個case指令后面的檢測值進(jìn)行比較,如果比較結(jié)果為真,MATLAB將執(zhí)行case后面的語塊,然后跳出該結(jié)構(gòu);如果比較結(jié)果為假,MATLAB則取下一個檢測值再比較。如果所有的結(jié)果都為假,即表達(dá)式的值與所有的檢測值都不相等,MATLAB將執(zhí)行otherwise后面的語塊。由此可見,上述結(jié)構(gòu)保證了至少有一組命令會得到執(zhí)行。

·每個case后面的檢測值可以有多個,而且類型可以不同;每個case后面的檢測值可以重復(fù),這在語法上沒有錯誤,只是在執(zhí)行時后面符合條件的case語句將被忽略,不起作用。·與if語句不同的是,各個case和otherwise語句出現(xiàn)的前后順序并不會影響程序的執(zhí)行結(jié)果。

【例5-13】查找字符串類型。其程序段為:

str=put(′pleaseinputastringofMethod′)

switchlower(str)

case(′linear′,′bilinear′}

disp(′Methodislinear′)

case′cubic′

disp(′Methodiscubic′)′

case′nearest′

disp(′Methodisnearest′)

otherwise

disp(′Unknownmethod.′)

end運行結(jié)果:

pleaseinputastringofMethod%MATLAB命令窗口顯示

′linear′%輸入字符串

str=%運行結(jié)果

linear

Methodislinear5.6程序流控制語句

在MATLAB的程序設(shè)計中,有時需要提前終止循環(huán)、跳出子程序、顯示錯誤或警告信息以及顯示批處理文件的執(zhí)行過程等,這就要用到程序流控制命令。MATLAB中提供了以下幾條流控制命令及錯誤顯示。

1)return指令通常在被調(diào)函數(shù)執(zhí)行完后,MATLAB會自動把控制轉(zhuǎn)到主函數(shù)或命令窗口,如果在被調(diào)函數(shù)中插入return指令,即可強制MATLAB結(jié)束執(zhí)行該函數(shù)并把控制轉(zhuǎn)出。

2)pause指令

pause指令可使程序運行停止,等待用戶按任意鍵繼續(xù)。該指令在程序調(diào)試及需要看中間結(jié)果時特別有用。pause指令有兩種用法:

·pause:暫停執(zhí)行程序,等待用戶按任意健繼續(xù)。

·pause(n):在繼續(xù)執(zhí)行前,暫停n秒。[HJ]

3)break指令

break指令包含最內(nèi)層while、for、if語句終止循環(huán)。通過使用break指令,可以不必等循環(huán)自然結(jié)束,而是根據(jù)循環(huán)內(nèi)部另設(shè)的某種條件是否滿足來決定是否退出循環(huán)或是否結(jié)束if

溫馨提示

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

評論

0/150

提交評論