第五章MATLAB程序設計課件_第1頁
第五章MATLAB程序設計課件_第2頁
第五章MATLAB程序設計課件_第3頁
第五章MATLAB程序設計課件_第4頁
第五章MATLAB程序設計課件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章MATLAB程序設計5.1M文件5.2運算符5.3循環(huán)結構5.4選擇結構5.5程序設計的有關問題5.1M文件MATLAB軟件的使用有兩種常用方式:人機直接交互的命令行操作方式MATLAB作為一種高級“數學演算和圖視器”M文件的編程工作方式MATLAB作為一種高級計算機程序語言,不僅可以象C,F(xiàn)ORTRAN等語言一樣進行程序設計,而且由于其本身的特點,更具有語言簡單、可讀性強、調試容易、調用方便等其它語言無法比擬的優(yōu)點。5.1M文件為了編寫、運行、調試和修改MATLAB程序的方便,可以把程序中的命令寫入一個文本文件,當用戶輸入運行這個程序的指令時,程序中的命令就由MATLAB按順序逐條執(zhí)行。MATLAB可以識別的文本文件稱為M文件,它可以用適當的文本編輯器創(chuàng)建,但其擴展名必須是“m”。即M文件的文件名應為:***.m。M文件有兩種形式:(1)命令式(Script)(2)函數式(Function)(1)命令式M文件

命令式M文件就是一個MATLAB命令的集合,即將一組相關的MATLAB命令編輯在同一個文本文件中,將此文件保存在指定的文件夾中。運行時只需在命令窗口輸入文件名,MATLAB就會自動按順序執(zhí)行文件中的命令。這樣就解決了在命令窗口逐條運行多條命令的麻煩,也可以避免作許多重復性的工作。命令式M文件在運行中可以調用MATLAB工作空間(WorkSpace)的所有數據(變量),而且所產生的變量均一直保存在工作空間中,直到用戶清除為止(全局變量)。例5.1建立命令文件將給定矩陣a,b的值互換。在M文本編輯器窗口輸入如下命令:c=a;a=b;b=c;a,b并以文件名exam1.m保存在MATLAB\work文件夾中。在MATLAB命令窗口輸入并運行a=1:8;b=[11,12,13,14;15,16,17,18];exam1a=1112131415161718b=12345678(2)函數式M文件

為了實現(xiàn)計算中的參數傳遞,需要用到函數式M文件。大多數函數式M文件有返回值。MATLAB中的絕大多數功能函數(命令)都是由函數式M文件實現(xiàn)的。使用MATLAB函數時,MATLAB根據用戶通過有效途徑傳遞給它的輸入變量,計算出所要求解的結果。然后,把這些結果按要求返回給用戶。(2)函數式M文件

函數式M文件執(zhí)行之后,除最后返回值之外,不保留任何中間過程。即函數式M文件所定義的變量僅在函數內部起作用(局部變量),并隨文件調用(執(zhí)行)的結束而被清除。由MATLAB函數執(zhí)行的命令,以及由這些命令所創(chuàng)建的中間變量,都是隱含的。所有可見的東西只是輸入和輸出,也就是說函數可以看成是一個黑箱,把一些數據送進去,經過加工處理,把結果送出來。函數式M文件的結構函數式M文件一般由五部分構成函數定義行(必須在文本的第一行)H1行(可省略,如果有,其位置必須在函數定義行的下一行)函數幫助文本(可省略,如果有,其位置必須緊隨H1行)注釋(可省略,如果有,其位置一般在函數幫助文本下,與函數幫助文本隔一行)函數體注意

函數式M文件的第一行,即函數定義行,其格式必須為function[輸出變量]=函數名(輸入變量)保存函數式M文件時,文件名應與函數名相同。H1行的內容可由MATLAB命令lookfor搜索到,因此該行應該提供函數的重要信息。H1行和函數幫助文本可由help命令顯示。例5.2編寫函數式M文件求半徑為r的圓的面積和周長function[x,y]=cir(r)函數定義行%CIRareaandperimeterofacircleH1行函數幫助文本函數體x=pi*r^2;y=2*pi*r;%Withoneoutputargument,x=cir(r)%istheareaxofacircleofradiir.%Withtwooutputargument,[x,y]=cir(r)%areareaxandperimeteryofacircle%ofradiir.%r:圓半徑a:圓面積p:圓周長%2004年9月編注釋將此函數文件以文件名cir存入matlab\work文件夾中,然后在MATLAB命令窗口調用該函數例如運行如下命令x=cir(10)[y,z]=cir(5)x=314.1593y=78.5398z=31.4159helpcirCIRareaandperimeterofacircleWithoneoutputargument,x=cir(r)istheareaofacircleofradiir.Withtwooutputargument,[x,y]=cir(r)areareaxandperimeteryofacircleofradiir.r:圓半徑a:圓面積p:圓周長H1行函數幫助文本5.2運算符

1.算術運算符(略)2.關系運算符<小于<=小于等于>大于>=大于等于==等于~=不等于關系運算法則關系運算符可以比較兩個同型矩陣,關系運算的結果生成一個同型的0-1矩陣。兩矩陣相應元素比較結果為真時,結果矩陣對應位置生成1,否則為0。注:關系運算也適用于矩陣與數量。

例5.3A=[123;456;789]B=5*ones(3)P=A<=B,Q=A>BR=A==B,S=A~=BR=000010000A=123B=555456555789555P=A<=BQ=A>BP=111110000Q=000001111R=A==BS=A~=BS=1111011113.邏輯運算符

邏輯運算符包括三種

&(and),|(or),~(not)邏輯運算可以進行同型矩陣或一個矩陣的運算,運算的結果生成一個同型的0-1矩陣。&(and)兩同型矩陣,相同位置元素都非0時,結果矩陣相應位置為1,否則為0;|(or)兩同型矩陣,相同位置元素不全為0時,結果矩陣相應位置為1,否則為0;~(not)對一個矩陣,元素非0時,結果矩陣相應位置為0,否則為1。R=001100A=120B=-100034010P=A&BQ=A|BP=100010Q=110011R=~AS=~BS=011101例5.4邏輯運算的例子A=[1,2,0;0,3,4],B=[-1,0,0;0,1,0]P=A&B,Q=A|B,R=~A,S=~B在一個表達式中,算術運算符優(yōu)先級最高,其次是關系運算符,最低級別是邏輯運算符。圓括號可以改變其順序。注意

例如x1=1&5<6-4x1=0x2=1&(5<6)-4x3=(1&5)<6-4x4=((1&5)<6)-4x2=1x3=1x4=-35.3循環(huán)結構在實際問題中,經常會遇到有規(guī)律的重復運算,或在程序中對某些語句進行重復執(zhí)行,這就需要用到循環(huán)語句。在循環(huán)語句中,每循環(huán)一次,就必須作出判斷,是繼續(xù)循環(huán)執(zhí)行還是終止執(zhí)行跳出循環(huán),這個判斷的依據稱為循環(huán)的終止條件。MATLAB語言提供了兩種循環(huán)方式:for循環(huán)和while循環(huán)5.3.1for循環(huán)for循環(huán)的特點是它的循環(huán)判斷條件通常是對循環(huán)次數的判斷。即一般情況下,for循環(huán)語句的循環(huán)次數是已知的。格式:

for

k=a:s:b

循環(huán)體語句

end其中k是循環(huán)變量,a、b和s分別是循環(huán)的初始值、終止值的限制值和步長(s=1時可以省略)程序運行時,首先將a的值賦給k,執(zhí)行循環(huán)體語句。執(zhí)行完一次循環(huán)之后,k自增一個s值,然后判斷k的值是否介于a和b之間,如果滿足仍然執(zhí)行循環(huán)體,直至不滿足為止。此時將結束for語句的執(zhí)行,而繼續(xù)執(zhí)行end語句的后續(xù)語句。例5.5求前100個自然數和的程序n=100;a=0;%定義初始值fork=1:n%定義循環(huán)變量a=a+k;%循環(huán)變量累加enda%輸出結果a=5050例5.6求數列n2+3n前10項構成的向量n=10;a=[];%定義初始值fork=1:n%定義循環(huán)變量a(k)=k^2+2*k;%計算a的第k個分量enda%輸出結果a=3815243548638099120a=zeros(1,10);注意在編制計算程序時應盡量避免過多使用循環(huán)語句,以提高程序運行速度。例如前面的程序可以用下面的程序代替

n=100;k=1:n;a=sum(k)a=5050為了測定程序運行所用的時間,可以啟動秒表定時器tic,toc格式:ticMATLAB程序toc5.3.2while

循環(huán)while循環(huán)的判斷控制一般是一個邏輯判斷語句,通常用于循環(huán)次數是未知的情況。格式:

while

關系表達式循環(huán)體語句

end關系表達式的值為1(真)時,語句被反復執(zhí)行,直至關系表達式的值為0(假)時終止,跳出循環(huán)執(zhí)行end的后續(xù)語句。例5.7求使2n>1000的最小正整數n輸入并運行如下程序k=1;while2^k<=1000k=k+1;endkk=10注意在設計多重循環(huán)時,要注意內、外循環(huán)之間的關系以及各語句放置的位置,不要搞錯。例5.8求5階方陣A=(aij),其中aij=i2+j2解:輸入并運行如下程序forn=1:5

form=5:-1:1 A(n,m)=n^2+m^2;

end

end

AA=25101726581320291013182534172025324126293441505.4選擇結構5.4.1if語句在MATLAB中,if語句有3種格式1.單分支if語句格式:當關系表達式的值為1(真)時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行end的后繼語句,若關系表達式的值為0(假)時,則直接執(zhí)行end的后繼語句。if

關系表達式語句組

end例5.9編寫程序判斷一個給定矩陣A的第1列元素是否全為0,若全為0,則從矩陣A中刪除第1列。解:編寫如下程序:if

A(:,1)==0A=A(:,2:length(A))end如果A=[023;056],運行結果為A=2356

2.雙分支if語句格式:

if

關系表達式語句組1

else語句組2

end當關系表達式的值為1(真)時,執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行end的后繼語句。例5.10判定給定整數N的奇偶性輸入并運行如下的程序:ifrem(N,2)==0

'Nisaeven.'else

'Nisaodd.'end如果N是偶數,輸出字符串:ans=Nisaeven.如果N是奇數,輸出字符串:ans=Nisaodd.

3.多分支if語句格式:if關系表達式1語句體1elseif關系表達式2語句體2······elseif關系表達式n語句體nelse語句體n+1end

如果關系表達式j(j=1,2,…,n)為真,則執(zhí)行語句j,然后執(zhí)行end的后續(xù)語句;如果if和elseif后所有的關系表達式都為假時,則執(zhí)行語句n+1,然后執(zhí)行end的后續(xù)語句。例5.11復雜條件語句的例子給定整數N,輸入并運行如下的程序:ifN<0

'Nisanegativenumber.'elseifN==0

'N=0'elseifrem(N,2)==0

'Nisapositiveeven.'else

'Nisapositiveodd.'end5.4.2break語句break語句的作用是導致for,while等循環(huán)語句的人為終止(不必等待循環(huán)自然結束)。如果一個循環(huán)語句內包含break語句時,則該循環(huán)語句內部應設置是否執(zhí)行break語句的條件語句。若執(zhí)行break語句,程序將跳出該循環(huán)。break語句一般與if語句配合使用。對于多重循環(huán),break語句僅對本層循環(huán)起作用。例5.12

雞兔同籠問題求解程序h=input('inputthenumberofheadh=');f=input('inputthenumberoffeetf=');fork=0:h

if2*k+4*(h-k)==fbreakendendji=k,tu=h-k5.5程序設計的有關問題5.5.1

兩種M文件的比較命令式M文件與函數式M文件形式上的差別就是有無函數定義行,即函數式M文件去掉函數定義行就轉變?yōu)槊钍組文件。命令式M文件與函數式M文件本質的差別是:命令式M文件的所有變量都是全局變量,函數式M文件的中間變量都是局部變量。

例5.12雞兔同籠問題求解的比較

命令式M文件h=input('h=');f=input('f=');fork=0:h

if2*k+4*(h-k)==f

break

endendj=k,t=h-k函數式M文件function[j,t]=jth(h,f)fork=0:h

if2*k+4*(h-k)==f

break

endendj=k;t=h-k;運行結果比較函數式M文件clear[j,t]=jth(36,100)j=22t=14whoYourvari

溫馨提示

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

評論

0/150

提交評論