版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第二講 MATLAB程序設(shè)計(jì)http:/ MATLAB有兩種工作方式:交互式的命令行工作方式M文件的程序工作方式一. M文件一. M文件用MATLAB語(yǔ)言編寫(xiě)的程序,稱(chēng)為M文件。 M文件有兩類(lèi):命令文件和函數(shù)文件。命令文件:沒(méi)有輸入?yún)?shù),也不返回輸出參數(shù)。函數(shù)文件:可以輸入?yún)?shù),也可返回輸出參數(shù)。M文件的建立與編輯建立新的M文件: 從MATLAB命令窗口的File菜單中選擇New菜單項(xiàng),再選擇M-file命令。一. M文件編輯已有的M文件: 從MATLAB命令窗口的Flie菜單中選擇Open M-file命令。命令文件將需要運(yùn)行的命令編輯到一個(gè)命令文件中,然后在MATLAB命令窗口輸入該命令文
2、件的名字,就會(huì)順序執(zhí)行命令文件中的命令?!纠?】 建立一個(gè)命令文件將變量a,b的值互換。 一. M文件 e31m文件:a=1:9; b=11,12,13;14,15,16;17,18,19; c=a;a=b;b=c; a b 在MATLAB的命令窗口中輸入e31,將會(huì)執(zhí)行該命令文件。二數(shù)據(jù)的輸入輸出1. input函數(shù):函數(shù):用于向計(jì)算機(jī)輸入一個(gè)參數(shù)。調(diào)用格式: A=input(提示信息,選項(xiàng));注:s選項(xiàng),則允許用戶(hù)輸入一個(gè)字符串。例如想輸入一個(gè)人的姓名,可采用命令 xm=input(Whats your name:,s)【例2】 求一元二次方程a2 +bx+c=0的根。二數(shù)據(jù)的輸入輸出 a
3、=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)將該程序以aa.m文件存盤(pán),然后運(yùn)行aa.m文件。2 pause函數(shù):函數(shù):暫停程序的執(zhí)行。調(diào)用格式: pause(延遲秒數(shù))注:如果省略延遲時(shí)間,直接使用pause,則將暫停程序,直到用戶(hù)按任一鍵后程序繼續(xù)執(zhí)行。二數(shù)據(jù)的輸入輸出 3 disp函數(shù):函數(shù):命令窗口輸出函數(shù)。調(diào)用格式: disp(輸出項(xiàng))注:輸出項(xiàng)為字符串或矩陣。例如 A=Hello,MATLAB; disp(A)輸出為: Hello,MATLAB三
4、程序設(shè)計(jì)(一)選擇結(jié)構(gòu)選擇結(jié)構(gòu)的語(yǔ)句有if語(yǔ)句和switch語(yǔ)句。1 if語(yǔ)句語(yǔ)句 格式一: if 條件 語(yǔ)句組 end三程序設(shè)計(jì)格式二: if 條件 語(yǔ)句組1 else 語(yǔ)句組2 end(一)選擇結(jié)構(gòu)格式三: if 條件1 語(yǔ)句組1 elseif 條件2 語(yǔ)句組2 elseif 條件m 語(yǔ)句組m else 語(yǔ)句組m+1 end三程序設(shè)計(jì)【例4】 輸入三角形的三條邊,求面積。 A=input(請(qǐng)輸入三角形的三條邊:); 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*(
5、p-A(1)*(p-A(2)*(p-A(3); disp(s); else disp(不能構(gòu)成一個(gè)三角形。) end運(yùn)行: 請(qǐng)輸入三角形的三條邊:4 5 6 9.9216三程序設(shè)計(jì)(一)選擇結(jié)構(gòu)【例5】 輸入一個(gè)字符,若為大寫(xiě)字母,則輸出其后繼字符,若為小寫(xiě)字母,則輸出其前導(dǎo)字符,若為其他字符則原樣輸出。c=input(,s); if c=A & c=a& c=z disp(setstr(abs(c)-1); else disp(c); end三程序設(shè)計(jì)(一)選擇結(jié)構(gòu)2 switch語(yǔ)句語(yǔ)句switch語(yǔ)句根據(jù)變量或表達(dá)式的取值不同,分別執(zhí)行不同的語(yǔ)句。其格式為: switch
6、 表達(dá)式 case 值1 語(yǔ)句組1 case 值2語(yǔ)句組2 case 值m 語(yǔ)句組m otherwise 語(yǔ)句組m+1 end三程序設(shè)計(jì)(一)選擇結(jié)構(gòu)【例6】 根據(jù)變量 num 的值來(lái)決定顯示的內(nèi)容。 num=input(請(qǐng)輸入一個(gè)數(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三程序設(shè)計(jì)(一)選擇結(jié)構(gòu)(二)循環(huán)結(jié)構(gòu)實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句:for語(yǔ)句和w
7、hile語(yǔ)句。1 for語(yǔ)句:語(yǔ)句:格式: for 循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)式3 循環(huán)體語(yǔ)句 end注:其中表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長(zhǎng),表達(dá)式3的值為循環(huán)變量的終值。步長(zhǎng)為1時(shí),表達(dá)式2可以省略。三程序設(shè)計(jì)2 while語(yǔ)句語(yǔ)句格式為: while (條件) 循環(huán)體語(yǔ)句 end【例7】 根據(jù)例3.6中求y的表達(dá)式,求: (1)y3 break; end i=i+1; end n=i-1 y=y-f三程序設(shè)計(jì)(二)循環(huán)結(jié)構(gòu)3 循環(huán)的嵌套循環(huán)的嵌套如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)結(jié)構(gòu),就稱(chēng)為循環(huán)的嵌套,或稱(chēng)為多重循環(huán)結(jié)構(gòu)。多重循環(huán)的嵌套層數(shù)可以是任意的??梢园?/p>
8、照嵌套層數(shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。三程序設(shè)計(jì)(二)循環(huán)結(jié)構(gòu)【例8】 求100,1000以?xún)?nèi)的全部素?cái)?shù)。 n=0; for m=100:1000 flag=1; j=m-1; i=2; while i=j & flag if rem(m,i)=0 flag=0; end i=i+1; end if flag n=n+1; prime(n)=m; end end prime %變量prime存放素?cái)?shù)三程序設(shè)計(jì)(二)循環(huán)結(jié)構(gòu)四函數(shù)文件函數(shù)文件是另一種形式的M文件,每一個(gè)函數(shù)文件都定義一個(gè)函數(shù)。事實(shí)上,MATLAB提供的標(biāo)準(zhǔn)函數(shù)大部分
9、都是由函數(shù)文件定義的。四. 函數(shù)文件1函數(shù)文件格式函數(shù)文件格式函數(shù)文件由function語(yǔ)句引導(dǎo),其格式為: function 輸出形參表=函數(shù)名(輸入形參表) 注釋說(shuō)明部分 函數(shù)體注:其中函數(shù)名的命名規(guī)則與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當(dāng)輸出形參多于1個(gè)時(shí),則應(yīng)該用方括號(hào)括起來(lái)。【例9】 編寫(xiě)函數(shù)文件求小于任意自然數(shù)n的Fibonacci數(shù)列各項(xiàng)。 function f=ffib(n) %用于求Fibonacci數(shù)列的函數(shù)文件 %f=ffib(n) %1999年9月30日編 f=1,1; i=1; while f(i)+f(i+1)n f(i+2)=f(i)
10、+f(i+1); i=i+1; end將以上函數(shù)文件以文件名ffib.m存盤(pán),然后在MATLAB命令窗口輸入以下命令,可求小于2 000的Fibonacci數(shù)。 ffib(2000)四. 函數(shù)文件2函數(shù)調(diào)用函數(shù)調(diào)用 函數(shù)文件編制好后,就可調(diào)用函數(shù)進(jìn)行計(jì)算了。如上面定義ffib函數(shù)后,調(diào)用它求小于2000的Fibonacci數(shù)。函數(shù)調(diào)用的一般格式是: 輸出實(shí)參表=函數(shù)名(輸入實(shí)參表)四. 函數(shù)文件【例10】 利用函數(shù)文件,實(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); th
11、eta=atan(y/x); 調(diào)用tran.m的命令文件main1.m: x=input(Please input x=:); y=input(Please input y=:); gam,the=tran(x,y); gam the已知轉(zhuǎn)換公式為: 極坐標(biāo)的矢徑:= 極坐標(biāo)的幅角:=四. 函數(shù)文件【例11】 利用函數(shù)的遞歸調(diào)用,求n!。 function f=factor(n) if n=1 f=1; else f=factor(n-1)*n; end return; %返回 在命令文件main2.m中調(diào)用函數(shù)文件factor.m: for i=1:10 fac(i)=factor(i);
12、end fac程序運(yùn)行結(jié)果是: fac = Columns 1 through 6 1 2 6 24 120 720 Columns 7 through 10 504 40320 362880 3628800四. 函數(shù)文件3 函數(shù)所傳遞參數(shù)的可調(diào)性函數(shù)所傳遞參數(shù)的可調(diào)性MATLAB在函數(shù)調(diào)用上有一個(gè)與眾不同之處:函數(shù)所傳遞參數(shù)數(shù)目的可調(diào)性。憑借這一點(diǎn),一個(gè)函數(shù)可完成多種功能。 在調(diào)用函數(shù)時(shí),MATLAB用兩個(gè)永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參和輸出實(shí)參的個(gè)數(shù)。只要在函數(shù)文件中包含這兩個(gè)變量,就可以準(zhǔn)確地知道該函數(shù)文件被調(diào)用時(shí)的輸入輸出參數(shù)個(gè)數(shù),從而決定函數(shù)如何進(jìn)
13、行處理。四. 函數(shù)文件【例12】 nargin用法示例函數(shù)文件examp.m: function fout=charray(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=1;2;3; examp(x) examp(x,y) examp(x,y,3)執(zhí)行mydemo.m后的輸出是: ans = 1 2 3 ans = 2 4 6 ans = 21四. 函數(shù)文件五全局變量和局部變量 在MATLAB中,全局變量用命令global
14、定義。函數(shù)文件的內(nèi)部變量是局部的,與其他函數(shù)文件及MATLAB工作空間相互隔離。但是,如果在若干函數(shù)中,都把某一變量定義為全局變量,那么這些函數(shù)將公用這一個(gè)變量。全局變量的作用域是整個(gè)MATLAB工作空間,即全程有效。所有的函數(shù)都可以對(duì)它進(jìn)行存取和修改。因此,定義全局變量是函數(shù)間傳遞信息的一種手段。四. 函數(shù)文件【例13】 全局變量應(yīng)用示例先建立函數(shù)文件wadd.m,該函數(shù)將輸入的參數(shù)加權(quán)相加。function f=wadd(x,y) %add two variable global ALPHA BETA f=ALPHA*x+BETA*y;在命令窗口中輸入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2)輸出為: s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《古樸的音韻》課件
- 《以變革迎接未來(lái)》課件
- 2024高鐵車(chē)站建筑分包商協(xié)議范例
- 《公司KPI提取》課件
- 浙江經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)高級(jí)語(yǔ)言程序設(shè)計(jì)(C++)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度售樓處物業(yè)設(shè)施設(shè)備維護(hù)保養(yǎng)合同2篇
- 科研設(shè)計(jì)行業(yè)安全管理工作總結(jié)
- 2024年魚(yú)塘承包養(yǎng)殖產(chǎn)業(yè)鏈并購(gòu)合同3篇
- 漁業(yè)養(yǎng)殖行業(yè)技術(shù)提升策略
- 《直流穩(wěn)壓》課件
- 2024年數(shù)學(xué)三年級(jí)上冊(cè)乘法分配律基礎(chǔ)練習(xí)題(含答案)
- 中煤電力有限公司招聘筆試題庫(kù)2024
- (必練)廣東省生態(tài)環(huán)境監(jiān)測(cè)專(zhuān)業(yè)技術(shù)人員大比武理論試題庫(kù)(含答案)
- 四年級(jí)數(shù)學(xué)脫式計(jì)算練習(xí)題100道
- GB/T 18029.1-2024輪椅車(chē)第1部分:靜態(tài)穩(wěn)定性的測(cè)定
- 自適應(yīng)噪聲抵消技術(shù)的研究
- 湖南省建筑工程定額
- DIALux-4.7軟件使用培訓(xùn)
- (2024年)《處方管理辦法》培訓(xùn)課件
- 我國(guó)鄉(xiāng)鎮(zhèn)小學(xué)高年級(jí)學(xué)生課外閱讀現(xiàn)狀調(diào)查與研究
- 道路交通安全隱患排查整治方案
評(píng)論
0/150
提交評(píng)論