版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、MATLAB程序設(shè)計,M文件編寫與調(diào)試,交互式的命令行工作方式 M文件的程序工作方式,腳本文件(命令文件),函數(shù)文件,兩類M文件,MATLAB兩種工作方式,6.1 腳本文件,腳本文件(命令文件)是將需要運行的命令編輯到一個命令文件中。 在MATLAB命令窗口輸入該命令文件的名字,就會順序執(zhí)行命令文件中的命令。 腳本文件沒有輸入?yún)?shù),也不返回輸出參數(shù)。,1. input函數(shù):用于向計算機輸入一個參數(shù)。 調(diào)用格式: A=input(提示信息,選項); 注:s選項,則允許用戶輸入一個字符串。 例如想輸入一個人的姓名,可采用命令 xm=input(Whats your name:,s),數(shù)據(jù)的輸入,【
2、例1】 求一元二次方程ax2 +bx+c=0的根。 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) 將該程序以a1.m文件存盤,然后運行a1.m文件。,2 pause函數(shù):暫停程序的執(zhí)行。 調(diào)用格式: pause(延遲秒數(shù)) 注:如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。,hold on % 圖形迭加 axis(0,100,0,120); % 設(shè)置坐標(biāo)軸 k=0;A=0,0; %導(dǎo)彈初始位置 B=0,100; %飛機
3、初始位置 v=1;dt=1; %離散時間改變量 d=100; %相距距離 while d0.5 plot(A(1),A(2), r.); %畫導(dǎo)彈位置 plot(B(1),B(2), b*); %畫飛機位置 pause(0.2); k=k+1; B=B+v*dt,0; %飛機移動位置 e=B-A; %導(dǎo)彈指向飛機向量 d=norm(e); e0=e/d; %取向量方向(單位化) A=A+2.0*v*dt*e0; %導(dǎo)彈追擊位置 end,a2.m,【例2】,數(shù)據(jù)的輸出,3 disp函數(shù):命令窗口輸出函數(shù)。 調(diào)用格式: disp(輸出項) 注:輸出項為字符串或矩陣。,【例3】 A=Hello,MA
4、TLAB; disp(A) %輸出為: Hello,MATLAB,程序結(jié)構(gòu): 順序結(jié)構(gòu) MatLab程序運算順序 選擇結(jié)構(gòu)(分支結(jié)構(gòu))If 條件 , 表達(dá)式; else(if), 表達(dá)式; endSwitch 表達(dá)式, case 表達(dá)式,otherwise end 循環(huán)結(jié)構(gòu) For 變量=表達(dá)式, 循環(huán)語句; endWhile 條件,語句 ; end,6.1.1 MATLAB的程序結(jié)構(gòu),【例4】 if語句運用舉例:輸入三角形的三條邊,求面積。,A=input(請輸入三角形的三條邊:); if A(1)+A(2)A(3) else disp(不能構(gòu)成一個三角形。) end %運行: 請輸入三角形
5、的三條邊:4 5 6 a4.m,程序結(jié)構(gòu): if選擇結(jié)構(gòu),【例5】 switch語句運用舉例:根據(jù)變量 num 的值來決定顯示的內(nèi)容。,num=input(請輸入一個數(shù)); switch num case -1 disp(I am a teacher.); case 0 disp(I am a student.); case 1 disp(You are a teacher.); otherwise disp(You are a student.); end,a5.m,程序結(jié)構(gòu): switch 選擇結(jié)構(gòu),實現(xiàn)循環(huán)結(jié)構(gòu)的語句: 1 for語句: 格式: for 循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)
6、式3 循環(huán)體語句 end 注:其中表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長,表達(dá)式3的值為循環(huán)變量的終值。步長為1時,表達(dá)式2可以省略。 2 while語句 格式: while (條件) 循環(huán)體語句 end,程序結(jié)構(gòu):循環(huán)結(jié)構(gòu),【例6】循環(huán)語句應(yīng)用舉例:計算滿足表達(dá)式 的最大y、n值。i為正整數(shù)。 y=0; i=1; while 1 %循環(huán)的條件為1。本例循環(huán)條件總是滿足的,是個永真循環(huán) f=1/(2*i-1); y=y+f; if y3 break; end i=i+1; end n=i-1 y=y-f,Break語句 break語句常用在for或while循環(huán)語句中,一般與if語句
7、一起使用。其作用是當(dāng)滿足if語句時,在循環(huán)尚未結(jié)束時跳出當(dāng)前循環(huán)。在嵌套循環(huán)中,break只能跳出包含它的最內(nèi)層循環(huán)。,程序結(jié)構(gòu): while循環(huán)結(jié)構(gòu),Continue 語句 continue也常和if語句一起用在for或while循環(huán)中。其作用是當(dāng)滿足if語句時跳過循環(huán)體內(nèi)位于continue之后的那些尚未執(zhí)行的語句,執(zhí)行下一次循環(huán)的判斷。(但不會跳出當(dāng)前循環(huán)),循環(huán)的嵌套,如果一個循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套,或稱為多重循環(huán)結(jié)構(gòu)。 多重循環(huán)的嵌套層數(shù)可以是任意的??梢园凑涨短讓訑?shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。,【
8、例7】多重循環(huán)結(jié)構(gòu)舉例:求100,1000以內(nèi)的全部素數(shù)。,n=0; for m=100:1000 flag=1; j=m-1; i=2; while i=j %變量prime存放素數(shù) end end prime,a7.m,程序結(jié)構(gòu): 多重循環(huán)結(jié)構(gòu),6.2 函數(shù)文件,函數(shù)文件:每一個函數(shù)文件都定義一個函數(shù)。MATLAB提供的標(biāo)準(zhǔn)函數(shù)大部分都是由函數(shù)文件定義的。函數(shù)文件可以輸入?yún)?shù),也可返回輸出參數(shù)。,與腳本(命令)文件不同,函數(shù)文件猶如一個“黑箱”,把一些數(shù)據(jù)送入處理,再把結(jié)果送出來。MATLAB提供的函數(shù)指令大部分都是由函數(shù)文件組成。,1函數(shù)文件格式,函數(shù)文件由function語句引導(dǎo),其格
9、式為: function 輸出形參表=函數(shù)名(輸入形參表) 注釋說明部分 函數(shù)體 注:其中函數(shù)名的命名規(guī)則與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。如果輸出形參個數(shù)多于1,則應(yīng)該用方括號括起來。,2函數(shù)文件調(diào)用,函數(shù)調(diào)用的一般格式是: 輸出實參表=函數(shù)名(輸入實參表),function Yd=DYdt(t,Y) %輸入量 global G ME % 定義全局變量 xy=Y(1:2);Vxy=Y(3:4); % ,global G ME G=6.672e-11;ME=5.97e24; . t,YY=ode45(DYdt,tspan,Y0); %采用4、5階Runge-Ku
10、tta法,結(jié)構(gòu)形式上: 函數(shù)文件的第一行總是以“function”引導(dǎo),稱為函數(shù)申明行。該行以關(guān)鍵字function開頭,函數(shù)名以及函數(shù)的輸入輸出變量都在這一行被定義。 函數(shù)申明行之后以%開頭的第一行稱注釋行。這行供lookfor關(guān)鍵字查詢。 第一注釋行及其之后的連續(xù)以%開頭的所有注釋行構(gòu)成整個在線幫助文本??赏ㄟ^help查詢到,稱為幫助文本區(qū)。 與在線幫助文本區(qū)相隔一個“空”行,也以%開頭,標(biāo)志編寫及修改該M文件的作者和日期,稱為編寫和修改記錄。 接下來是函數(shù)體。為清晰起見,它與前面的注釋行以“空”格隔開。,6.2.1 函數(shù)文件的結(jié)構(gòu)與特點,function Yd=DYdt(t,Y) %輸入
11、量 global G ME % 定義全局變量 xy=Y(1:2);Vxy=Y(3:4); % r=sqrt(sum(xy.2); % Yd=Vxy;-G*ME*xy/r3; %計算Y(t),運行上與腳本文件運行不同 : -腳本文件運行后 ,所產(chǎn)生的所有變量都駐留在 MATLAB基本工作空間(Base workspace)中。只要用戶不使用清除指令(clear), MATLAB指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中。 -函數(shù)文件運行時,MATLAB專門為它開辟一個臨時工作空間,稱為函數(shù)工作空間(Function workspace)。當(dāng)執(zhí)行文件最后一行指令時,就結(jié)束該函數(shù)文件的運行,同
12、時該臨時函數(shù)工作空間及其所有的中間變量就會立即被清除。,6.2.1 函數(shù)文件的結(jié)構(gòu)與特點,6.2.2 函數(shù)文件調(diào)用,調(diào)用格式:輸出實參表=函數(shù)名(輸入實參表) 函數(shù)調(diào)用時各實參出現(xiàn)的順序、個數(shù),應(yīng)與函數(shù)定義時形參的順序、個數(shù)一致,否則會出錯。調(diào)用時先將實參傳遞給相應(yīng)的形參,從而實現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。 函數(shù)調(diào)用可以嵌套,一個函數(shù)可以調(diào)用別的函數(shù),甚至可以調(diào)用它自己(遞歸調(diào)用)。 文件名與函數(shù)名必須一一對應(yīng),這樣才能保證調(diào)用成功。如果函數(shù)名和文件名不一致時以文件名為主,【例8】 編寫函數(shù)文件求小于任意自然數(shù)n的 Fibonacci數(shù)列。,function f=ffib(n) %用于求
13、Fibonacci數(shù)列的函數(shù)文件 %f=ffib(n) %1999年30日編 f=1,1; i=1; while f(i)+f(i+1)n f(i+2)=f(i)+f(i+1); i=i+1; end,將以上函數(shù)文件以文件名ffib.m存盤,然后在MATLAB命令窗口輸入以下命令,可求小于2000的Fibonacci數(shù): ffib(2000),函數(shù)文件編寫與調(diào)用,【例9】 利用函數(shù)文件,實現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(,)之間的轉(zhuǎn)換。,函數(shù)文件tran.m: function gama,theta=tran(x,y) gama=sqrt(x*x+y*y); theta=atan(y/x);,轉(zhuǎn)
14、換公式: 極坐標(biāo)的矢徑:= 極坐標(biāo)的幅角:tg()=y/x,命令窗口直接調(diào)用: g,th=tran(1,2),函數(shù)文件編寫與調(diào)用,調(diào)用文件main1.m: x=input(Please input x=:); y=input(Please input y=:); gam,the=tran(x,y); gam, the,main1,6.2.2 函數(shù)文件調(diào)用,調(diào)用格式:輸出實參表=函數(shù)名(輸入實參表) MATLAB允許使用比“標(biāo)稱數(shù)目”少的輸入輸出參數(shù),實現(xiàn)對函數(shù)的調(diào)用。 調(diào)用函數(shù)時,MATLAB用兩個永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時的輸入實參和輸出實參的個數(shù)。 只要在函數(shù)
15、文件中包含這兩個變量,就可以準(zhǔn)確地知道該函數(shù)文件被調(diào)用時的輸入輸出參數(shù)個數(shù),從而決定函數(shù)如何進(jìn)行處理。,【例10】 nargin用法示例,函數(shù)文件charry.m: function fout=charry(a,b,c) if nargin=1 fout=a; elseif nargin=2 fout=a+b; elseif nargin=3 fout=(a*b*c)/2; end,命令文件mydemo.m: x=1:3;y=4; charry (x) charry (x,3) charry (x,y,3),執(zhí)行mydemo.m后的輸出是: ans = 1 2 3 ans = 4 5 6 an
16、s = 6 12 18 %注意:nargin和nargout本身都是函數(shù),所以用戶不能賦值,也不能直接顯示,函數(shù)文件編寫與調(diào)用,函數(shù)的類別,主函數(shù)和子函數(shù): 開頭定義的函數(shù)文件為主函數(shù),而在函數(shù)體內(nèi)定義的其他函數(shù)為子函數(shù)。 子函數(shù)只能被主函數(shù)或者同一主函數(shù)下的其他子函數(shù)所調(diào)用。 局部函數(shù) Matlab語言中把存放在目錄private下的函數(shù)稱為局部函數(shù),這些函數(shù)只有private目錄的父目錄中的函數(shù)才可以調(diào)用,而子函數(shù)只能被其所在M文件的主函數(shù)所調(diào)用,所以,局部函數(shù)在可用范圍上大于子函數(shù)。 注:M文件調(diào)用函數(shù)時,首先檢測該函數(shù)是否為此文件的子函數(shù);如不是,再檢測是否為可用的局部函數(shù);仍然為否時
17、,再檢測該函數(shù)是否為Matlab搜索路徑上的其他M文件。,6.2.3全局變量和局部變量,全局(Global)變量:通過 global 指令定義,MATLAB允許幾個不同的函數(shù)以及基本工作空間共享同一個變量,這種被共享的變量稱為全局變量。 局部(Local)變量:它存在于函數(shù)內(nèi)部的中間變量,產(chǎn)生于函數(shù)的運行過程中,其影響范圍僅限于該函數(shù)本身 %全局變量的作用域是整個MATLAB工作空間,即全程有效。因此,定義全局變量是函數(shù)間傳遞信息的一種手段。但由于所有的函數(shù)都可以對它進(jìn)行存取和修改,故易出錯。,【例11】建立函數(shù)文件wadd.m,函數(shù)將輸入的參數(shù)乘以相應(yīng) 的系數(shù)后相加。,function f=wadd(x,y) % add two variable global ALPHA BETA % 識別命令窗口的alpha beta值 f=ALPHA*x+BETA*y;
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年媒體策劃師廣告創(chuàng)意與投放策略測試
- 2026年英語六級考試閱讀理解專項訓(xùn)練題目
- 2026年建筑工程質(zhì)量與安全控制考試題庫
- 2026年人工智能算法工程師進(jìn)階測試題庫
- 2026年酒店業(yè)招聘題庫客戶信用評分體系與營銷策略
- 2026年建筑結(jié)構(gòu)工程師執(zhí)業(yè)資格測試題
- 2026年職業(yè)發(fā)展路徑規(guī)劃與選擇試題
- 2026年財經(jīng)知識要點財經(jīng)考試練習(xí)題
- 2026年營銷崗位合作協(xié)議條款分析能力測驗
- 2026年音樂教師資格證考試?yán)碚擃}庫
- 創(chuàng)傷急救四大技術(shù)
- 2025年計劃員崗位考試題及答案
- SY-T5051-2024鉆具穩(wěn)定器-石油天然氣行業(yè)標(biāo)準(zhǔn)
- 服裝廢品管理辦法
- 春節(jié)工地留守人員安全教育
- 部編版一年級語文下冊無紙化闖關(guān)測試 課件
- 醫(yī)院后勤采購集中采購計劃
- DB63∕T 2270-2024 公路建設(shè)項目智慧工地技術(shù)指南
- GA/T 2187-2024法庭科學(xué)整體分離痕跡檢驗規(guī)范
- 手術(shù)器械包裝操作
- 電梯維保服務(wù)方案及措施
評論
0/150
提交評論