




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MATLAB編程與工程應用教師 :曾曉東電話 _mail :zengxiaodong@263.netQQ :241747139MATLAB編程與工程應用3章MATLAB程序設計第4章MATLAB程序設計4.1M文件4.2程序控制結構4.3函數文件4.4程序舉例4.5程序調試3章MATLAB程序設計4.1M文件一、M文件概述用MATLAB語言編寫的程序,稱為M文件。M文件可以根據調用方式的不同分為兩類:命令文件(ScriptFile)函數文件(FunctionFile)。二、M文件的建立和打開M文件是一個文本文件,它可以用任何編輯程序來建立和編輯,而一般常用且最為方便的是使用MATLAB提供的文本編輯器。3章MATLAB程序設計4.1M文件1.建立新的M文件
(1)菜單操作。從MATLAB主窗口的File菜單中選擇New菜單項,再選擇M-file命令,屏幕上將出現MATLAB文本編輯器窗口。
(2)命令操作。在MATLAB命令窗口輸入命令edit,啟動MATLAB文本編輯器后,輸入M文件的內容并存盤。
(3)命令按鈕操作。單擊MATLAB主窗口工具欄上的NewM-File命令按鈕,啟動MATLAB文本編輯器后,輸入M文件的內容并存盤。3章MATLAB程序設計4.1M文件2.打開已有的M文件
(1)菜單操作。從MATLAB主窗口的File菜單中選擇Open命令,則屏幕出現Open對話框,在Open對話框中選中所需打開的M文件。在文檔窗口可以對打開的M文件進行編輯修改,編輯完成后,將M文件存盤。
(2)命令操作。在MATLAB命令窗口輸入命令:edit文件名,則打開指定的M文件。
(3)命令按鈕操作。單擊MATLAB主窗口工具欄上的OpenFile命令按鈕,再從彈出的對話框中選擇所需打開的M文件。3章MATLAB程序設計4.2程序控制結構一、順序結構1.input函數
A=input(提示信息,選項);注:’s’選項,則允許用戶輸入一個字符串。例如想輸入一個人的姓名,可采用命令
xm=input('What''syourname:','s')【例4.1】求一元二次方程a2+bx+c=0的根。(exp3_1.m)
a=input('a=?'); b=input('b=?');c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]3章MATLAB程序設計一、順序結構2.disp函數
disp(輸出項)輸出項為字符串或矩陣例
A=‘Hello,MATLAB';
disp(A)輸出為:
Hello,MATLAB3章MATLAB程序設計4.2程序控制結構二、選擇結構1.if,else,elseif語句1)if(邏輯表達式)
執行語句
end2)if(邏輯表達式)
執行語句1 else
執行語句2 end3)if(邏輯表達式1)
執行語句1
elseif(邏輯表達式2)
執行語句2…else
執行語句nend3章MATLAB程序設計二、選擇結構【例4.2】:輸入三角形的三條邊,求面積。(exp3_2.m)A=input('請輸入三角形的三條邊:');if(A(1)+A(2)>A(3))&(A(1)+A(3)>A(2))&(A(2)+A(3)>A(1))
p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));
disp(s);else
disp('不能構成一個三角形。')end運行:請輸入三角形的三條邊:[456]9.92163章MATLAB程序設計二、選擇結構【例4.3】:輸入一個字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導字符,若為其他字符則原樣輸出。(exp3_3.m)c=input(‘請輸入字符','s');ifc>='A'&c<='Z'disp(setstr(abs(c)+1));elseifc>='a'&c<='z'disp(setstr(abs(c)-1));else
disp(c);end3章MATLAB程序設計二、選擇結構2.switch語句格式:switch(表達式)%表達式可以是標量或字符串
case值1
語句1 case值2
語句2 … otherwise
語句nend執行方式:表達式的值和哪種情況(case)的值相同,就執行哪種情況中的語句,如果不同,則執行otherwise中的語句。格式中也可以不包括otherwise,這時如果表達式的值與列出的各種情況都不相同,則繼續向下執行。3章MATLAB程序設計二、選擇結構【例4.4】根據變量num的值來決定顯示的內容。(exp3_4.m)num=input('請輸入一個數');switch(num) case-1
disp('Iamateacher.'); case0
disp('Iamastudent.'); case1
disp('Youareateacher.'); otherwise
disp('Youareastudent.');end3章MATLAB程序設計二、選擇結構3.try語句格式:
try
語句組1 catch
語句組2 endtry語句先試探性執行語句組1,如果語句組1在執行過程中出現錯誤,則將錯誤信息賦給保留的lasterr變量,并轉去執行語句組2。3章MATLAB程序設計二、選擇結構【例4.5】矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉去求兩矩陣的點乘。(exp3_5.m)程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%顯示出錯原因3章MATLAB程序設計4.2程序控制結構三、循環語句1.for語句(1)for循環變量=表達式1:表達式3:表達式2
循環語句組
End(2)for循環變量=數組范圍 循環語句組
end步長缺省值為1,可以在正實數或負實數范圍內任意指定。對于正數,循環變量的值大于終止值時,循環結束;對于負數,循環變量的值小于終止值時,循環結束。循環結構可以嵌套使用。書寫格式不必太過于拘泥,在Editor編輯器中會自動進行處理。3章MATLAB程序設計三、循環語句注意:1)for循環不能用for循環內重新賦值循環變量n來終止forn=1:10 x(n)=sin(n*pi/10); n=10;end2)語句1:10是標準的MATLAB數組創建語句,在FOR循環內接受任何有效的MATLAB數組。data=[39456;716–15];forn=datax=n(1)-n(2)end
3章MATLAB程序設計三、循環語句3)for循環可按需要嵌套forn=1:5form=5:-1:1 S(n,m)=n^2+m^2;end
disp(n)endS=25101726581320291013182534172025324126293441504)當有一個等效的數組來解給定的問題時,應避免用FOR循環,例如,上面的注意1中的例子可重寫為n=1:10;x=sin(n*pi/10);5)為了得到最大的速度,在for循環(while循環)被執行之前,應預先分配數組。如在注意3中,應在循環前執行S=zeros(5);
3章MATLAB程序設計三、循環語句2、while循環語句
while(表達式)
循環體
end若表達式為真,則執行循環體的內容,執行后再判斷表達式是否為真,若不為真,則跳出循環體,向下繼續執行。While循環和for循環的區別在于,while循環結構的循環體被執行的次數不是確定的,而for結構中循環體的執行次數是確定的。3章MATLAB程序設計三、循環語句【例3.6】:計算下式的值(exp3_6_1.m,exp3_6_2.m)(1)使用for循環sum=0;forI=1:1000 sum=sum+I^2+2*I;end(2)使用while循環sum=0;I=1;while(I<=1000) sum=sum+I^2+2*I; I=I+1;end3章MATLAB程序設計4.2程序控制結構四、程序流控制1.break命令作用是中斷循環語句的執行。中斷的循環語句可以是for語句,也可以是while語句。當滿足在循環體內設置的條件時,可以通過使用break命令使之強行退出循環,而不是達到循環終止條件時再退出循環。顯然,循環體內設置的條件必須在break之前。對于嵌套的循環結構,break只能退出包含它的最內層循環。3章MATLAB程序設計四、程序流控制【例3.7】:求滿足的n的最小值。(exp3_7_1.m,exp3_7_2.m)sum=0;forn=1:1000 sum=sum+n^2+2*n; if(sum>1000) break; endenddisplay(n)sum=0;n=0;while(sum<=1000) n=n+1; sum=sum+n^2+2*n;enddisplay(n)3章MATLAB程序設計四、程序流控制2.continue語句跳過循環體中的某些語句。當在循環體內執行到該語句時,程序將跳過循環體中所有剩下的語句,繼續下一次循環。3.return()函數作用是中斷函數的執行,返回上級調用函數。return()函數指令既可以用在循環體內,也可用在非循環體內。4.pause()函數暫停指令。運行程序時,到pause()函數指令執行后,程序將暫停,等待用戶敲任一鍵后繼續執行。pause(n)暫停幾秒后程序繼續執行若要強行中止程序的運行可使用Ctrl+C命令。3章MATLAB程序設計4.3函數文件一、函數文件的基本結構函數文件由function語句引導,其基本結構為:
function輸出形參表=函數名(輸入形參表)
注釋說明部分 函數體語句其中以function開頭的一行為引導行,表示該M文件是一個函數文件。函數名的命名規則與變量名相同。函數名必須與文件名相同。輸入形參為函數的輸入參數,輸出形參為函數的輸出參數。當輸出形參多于一個時,則應該用方括號括起來。3章MATLAB程序設計一、函數文件的基本結構【例3.8】:編寫函數文件求半徑為r的圓的面積和周長。(fcircle.m)function[s,p]=fcircle(r)%fcircle
半徑為r的圓的面積和周長%r圓半徑%s圓面積%p圓周長%編制時間:2007年8月30日s=pi*r*r;p=2*pi*r;3章MATLAB程序設計4.3函數文件二、函數調用函數調用的一般格式是:
[輸出實參表]=函數名(輸入實參表)要注意的是,函數調用時各實參出現的順序、個數,應與函數定義時形參的順序、個數一致,否則會出錯。函數調用時,先將實參傳遞給相應的形參,從而實現參數傳遞,然后再執行函數的功能。在MATLAB中,函數可以嵌套調用,即一個函數可以調用別的函數,甚至調用它自身。一個函數調用它自身稱為函數的遞歸調用。3章MATLAB程序設計二、函數調用【例3.9】:利用函數的遞歸調用,求n!。n!本身就是以遞歸的形式定義的:n!=n*(n-1)!顯然,求n!需要求(n-1)!,這時可采用遞歸調用(factor.m)functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;%遞歸調用求(n-1)!end3章MATLAB程序設計4.3函數文件三、函數參數的可調性在調用函數時,MATLAB用兩個永久變量nargin和nargout分別記錄調用該函數時的輸入實參和輸出實參的個數。只要在函數文件中包含這兩個變量,就可以準確地知道該函數文件被調用時的輸入輸出參數個數,從而決定函數如何進行處理?!纠?.10】:nargin示例命令文件:exp3_10.m函數文件:mydemo.m3章MATLAB程序設計4.3函數文件四、全局變量與局部變量全局變量用global命令定義,格式為:
global變量名【例4.11】:全局變量應用示例。(exp3_11.m)函數文件:wadd.m在命令窗口中輸入:globalALPHABETAALPHA=1;BETA=2;s=wadd(1,2)3章MATLAB程序設計4.4程序舉例【例4.12】:猜數游戲。首先由計算機產生[1,100]之間的隨機整數,然后由用戶猜測所產生的隨機數。根據用戶猜測的情況給出不同提示,如猜測的數大于產生的數,則顯示“太大了”,小于則顯示“太小了”,等于則顯示“你贏了”,同時退出游戲。用戶最多可以猜7次。exp3_12.m3章MATLAB程序設計4.4程序舉例【例4.13】:用篩選法求某自然數范圍內的全部素數。素數是大于1,且除了1和它本身以外,不能被其他任何整數所整除的整數。用篩選法求素數的基本思想是:要找出2——m之間的全部素數,首先在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 經濟運行管理及財務知識分析
- 湖北省鄂州市華容區2024-2025學年數學三下期末質量跟蹤監視試題含解析
- 哈爾濱工業大學《鋼琴即興伴奏(一)》2023-2024學年第二學期期末試卷
- 邯鄲應用技術職業學院《給排水施工與監理》2023-2024學年第二學期期末試卷
- 佳木斯職業學院《馬克思主義哲學原著》2023-2024學年第二學期期末試卷
- 湖南益陽箴言中學2024-2025學年普通高中畢業班單科質量檢查語文試題含解析
- 山東省2025屆高三下學期診斷性考試化學試題含解析
- 河海大學《發酵食品工藝學》2023-2024學年第一學期期末試卷
- 湖南理工職業技術學院《土木工程檢測技術》2023-2024學年第二學期期末試卷
- ??诮洕鷮W院《病原生物學與免疫學實驗(微免)》2023-2024學年第二學期期末試卷
- 2024-2025學年高中化學上學期第十四周 化學反應速率教學實錄
- 2025年初中地理中考押題卷(含解析)
- 老人預防電信詐騙
- 2024年11月-礦山隱蔽致災因素普查
- 【2025新教材】教科版一年級科學下冊全冊教案【含反思】
- 《經濟學原理》課件
- 第16課《有為有不為 》課件-2024-2025學年統編版語文七年級下冊
- 火鍋店創業計劃書:營銷策略
- 交通大數據分析-深度研究
- 基礎護理學試題及標準答案
- 《節奏與旋律》課件
評論
0/150
提交評論