M文件的編寫專業(yè)知識(shí)講座_第1頁
M文件的編寫專業(yè)知識(shí)講座_第2頁
M文件的編寫專業(yè)知識(shí)講座_第3頁
M文件的編寫專業(yè)知識(shí)講座_第4頁
M文件的編寫專業(yè)知識(shí)講座_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

MATLAB程序設(shè)計(jì)程序控制構(gòu)造函數(shù)文獻(xiàn)程序舉例程序調(diào)試第二講第1頁m文獻(xiàn)介紹顧客如想靈活應(yīng)用matlab去處理實(shí)際問題,充足調(diào)用matlab科學(xué)技術(shù)資源,就需要編輯m文獻(xiàn).包括matlab語言代碼文獻(xiàn)稱為m文獻(xiàn),其擴(kuò)展名為m.編輯m文獻(xiàn)可使用多種文本編輯器.第2頁復(fù)習(xí)M文獻(xiàn)用MATLAB語言編寫程序,稱為M文獻(xiàn)。M文獻(xiàn)能夠根據(jù)調(diào)用方式不一樣分為兩類:命令文獻(xiàn)(ScriptFile)和函數(shù)文獻(xiàn)(FunctionFile)。函數(shù)文獻(xiàn)文獻(xiàn)名必須與其函數(shù)名相同。第3頁M文獻(xiàn)包括兩部分:注釋文獻(xiàn)和程序文獻(xiàn)symsxy%symbolvariablesf=x^2+y;fi=finverse(f,y)%functionalinverse

程序部分第4頁MATLAB運(yùn)算符MATLAB運(yùn)算符可分為三類:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符。其中算術(shù)運(yùn)算符優(yōu)先級最高,其次是關(guān)系運(yùn)算符,再其次是邏輯運(yùn)算符。算術(shù)運(yùn)算符在前面已經(jīng)介紹,這里只介紹關(guān)系運(yùn)算符和邏輯運(yùn)算符.例1+2*3>8+9返回01+2<5&15+2*3>8+9返回11+2*(3>8)+9返回10第5頁MATLAB運(yùn)算符1.關(guān)系運(yùn)算符關(guān)系運(yùn)算符對于程序流程控制非常有用.MATLAB共有六個(gè)關(guān)系運(yùn)算符,它們分別是<不大于;<=不大于等于;>大于;>=大于等于;﹦﹦等于;~=不等于

關(guān)系運(yùn)算符能夠比較同型矩陣,此時(shí)將生成一種0-1矩陣,當(dāng)對應(yīng)元素經(jīng)關(guān)系運(yùn)算為真時(shí),對應(yīng)位置上生成1,不然為0。關(guān)系運(yùn)算符也能夠比較標(biāo)量和矩陣,此時(shí)是標(biāo)量與矩陣每個(gè)元素分別比較,生成一種0-1矩陣.第6頁MATLAB運(yùn)算符2.邏輯運(yùn)算符MATLAB有三個(gè)邏輯運(yùn)算符:與(&)或(|)非(~)。對于數(shù)值矩陣,當(dāng)元素為0時(shí),邏輯上為假;當(dāng)元素為非0時(shí),邏輯上為真.同關(guān)系運(yùn)算符同樣,邏輯運(yùn)算符兩端運(yùn)算數(shù)能夠是同型矩陣,對兩矩陣對應(yīng)元素分別運(yùn)算,成果為一種0-1矩陣.當(dāng)邏輯體現(xiàn)式值為真時(shí),賦值1,不然為0.同樣,其中一種矩陣也能夠是標(biāo)量。與(&)運(yùn)算:兩個(gè)運(yùn)算數(shù)都為真時(shí),成果為真,其他情況下(一真一假或兩個(gè)都假)成果為假.或(|)運(yùn)算:兩個(gè)運(yùn)算數(shù)都為假時(shí),成果為假,其他情況下(一真一假或兩個(gè)都真)為真.非(~)運(yùn)算:只有一種運(yùn)算數(shù),當(dāng)該運(yùn)算數(shù)為真時(shí),成果為假,不然,成果為真.第7頁次序構(gòu)造1.?dāng)?shù)據(jù)輸入從鍵盤輸入數(shù)據(jù),則能夠使用input函數(shù)來進(jìn)行,該函數(shù)調(diào)用格式為:A=input(提醒信息,選項(xiàng));其中提醒信息為一種字符串,用于提醒顧客輸入什么樣數(shù)據(jù)。假如在input函數(shù)調(diào)用時(shí)采取's'選項(xiàng),則允許顧客輸入一種字符串。例如,想輸入一種人姓名,可采取命令:xm=input('Whatisyourname?','s');R=input('Howmanyapples:')程序控制構(gòu)造第8頁2.?dāng)?shù)據(jù)輸出

MATLAB提供命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為disp(輸出項(xiàng))其中輸出項(xiàng)既能夠?yàn)樽址材軌驗(yàn)榫仃?。disp(‘a(chǎn)’)和disp(a)分別返回什么成果?第9頁例1分別建立命令文獻(xiàn)和函數(shù)文獻(xiàn),將華氏溫度f轉(zhuǎn)換為攝氏溫度c。程序1:首先建立命令文獻(xiàn)并以文獻(xiàn)名f2c.m存盤。clear;%清除工作空間中變量f=input('InputFahrenheittemperature:');c=5*(f-32)/9然后在MATLAB命令窗口中輸入f2c,將會(huì)執(zhí)行該命令文獻(xiàn),執(zhí)行情況為:InputFahrenheittemperature:73c=22.7778第10頁程序2:首先建立函數(shù)文獻(xiàn)f2c.m。functionc=f2c(f)c=5*(f-32)/9然后在MATLAB命令窗口調(diào)用該函數(shù)文獻(xiàn)。clear;y=input('InputFahrenheittemperature:');x=f2c(y)輸出情況為:InputFahrenheittemperature:70c=21.1111x=21.1111第11頁例2輸入x,y值,并將它們值交換后輸出。

程序如下:x=input('Inputxplease.');y=input('Inputyplease.');z=x;x=y;y=z;disp(x);disp(y);第12頁3.程序暫停暫停程序執(zhí)行能夠使用pause函數(shù),其調(diào)用格式為:pause(延遲秒數(shù))假如省略延遲時(shí)間,直接使用pause,則將暫停程序,直到顧客按任一鍵后程序繼續(xù)執(zhí)行。若要強(qiáng)行中斷程序運(yùn)行可使用Ctrl+C命令。第13頁選擇構(gòu)造1.if語句(條件轉(zhuǎn)移構(gòu)造)在MATLAB中,if語句有3種格式。(1)單分支if語句:if條件語句組end當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句后繼語句,若條件不成立,則直接執(zhí)行if語句后繼語句。第14頁例3求一元二次方程ax2+bx+c=0根。程序如下:a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;ifd>=0x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);end第15頁(2)雙分支if語句:if條件語句組1else語句組2end當(dāng)條件成立時(shí),執(zhí)行語句組1,不然執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句后繼語句。第16頁

例4計(jì)算分段函數(shù)值。

程序如下:x=input('請輸入x值:');ifx<=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endy第17頁

(3)多分支if語句:if條件1語句組1elseif條件2語句組2……elseif條件m語句組melse語句組nend語句用于實(shí)現(xiàn)多分支選擇構(gòu)造。第18頁2.switch語句(開關(guān)構(gòu)造)switch語句根據(jù)體現(xiàn)式取值不一樣,分別執(zhí)行不一樣語句,其語句格式為:switch體現(xiàn)式case體現(xiàn)式1語句組1case體現(xiàn)式2語句組2……case體現(xiàn)式m語句組motherwise語句組nend第19頁當(dāng)體現(xiàn)式值等于體現(xiàn)式1值時(shí),執(zhí)行語句組1,當(dāng)體現(xiàn)式值等于體現(xiàn)式2值時(shí),執(zhí)行語句組2,…,當(dāng)體現(xiàn)式值等于體現(xiàn)式m值時(shí),執(zhí)行語句組m,當(dāng)體現(xiàn)式值不等于case所列體現(xiàn)式值時(shí),執(zhí)行語句組n。當(dāng)任意一種分支語句執(zhí)行完后,直接執(zhí)行switch語句下一句。第20頁例5某班級對學(xué)生成績劃分等級,標(biāo)準(zhǔn)如下(分?jǐn)?shù)用mark來表達(dá)):

90≤mark≤100等級為A80≤mark<90等級為B70≤mark<80等級為C60≤mark<70等級為D0≤mark<60等級為E輸入學(xué)生成績,輸出其成績等級(百分制換五分制)。第21頁

程序如下:mark=input('請輸入學(xué)生成績');switchfix(mark/10)case{10,9}%成績在90與100之間grade='A';case{8}%成績大于等于80但不大于90grade='B';case{7}%成績大于等于70但不大于80grade='C';case{6}%成績大于等于60但不大于70grade='D';otherwise%成績低于60grade='E';endgradeceil,floor,round,fix.上取整下取整最鄰近取整朝零取整ceil(1.8)?floor(1.8)?fix(1.8)?fix(-1.8)?round(1.8)?round(-1.8)?第22頁3.try語句語句格式為:try語句組1catch語句組2endtry語句先試探性執(zhí)行語句組1,假如語句組1在執(zhí)行過程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給保存lasterr變量,并轉(zhuǎn)去執(zhí)行語句組2。第23頁例6矩陣乘法運(yùn)算要求兩矩陣維數(shù)相容,不然會(huì)犯錯(cuò)。先求兩矩陣乘積,若犯錯(cuò),則自動(dòng)轉(zhuǎn)去求兩矩陣點(diǎn)乘。程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%顯示犯錯(cuò)原因第24頁循環(huán)構(gòu)造1.for語句for語句格式為:for循環(huán)變量=體現(xiàn)式1:體現(xiàn)式2:體現(xiàn)式3循環(huán)體語句end其中體現(xiàn)式1值為循環(huán)變量初值,體現(xiàn)式2值為步長,體現(xiàn)式3值為循環(huán)變量終值。步長為1時(shí),體現(xiàn)式2能夠省略。第25頁例7一種三位正整數(shù)各位數(shù)字立方和等于該數(shù)本身則稱該數(shù)為水仙花數(shù)。輸出所有水仙花數(shù)。

程序如下:form=100:999m1=fix(m/100);%求m百位數(shù)字m2=rem(fix(m/10),10);%求m十位數(shù)字m3=rem(m,10);%求m個(gè)位數(shù)字ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endendrem:取余第26頁例8當(dāng)n=100時(shí),y是1到(2n-1)奇數(shù)倒數(shù)之和,求y值。

程序如下:y=0;n=100;fori=1:ny=y+1/(2*i-1);endy第27頁在實(shí)際MATLAB編程中,采用循環(huán)語句會(huì)降低其執(zhí)行速度,因此前面程序通常由下面程序來代替:n=100;y1=1:2:2*n-1;y=sum(1./y1);y第28頁for語句更一般格式為:for循環(huán)變量=矩陣體現(xiàn)式循環(huán)體語句end執(zhí)行過程是依次將矩陣各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各列元素處理完成。第29頁

例9寫出下列程序執(zhí)行成果。s=0;a=[1,3,4;15,16,17;18,19,20;21,22,23];fork=as=s+k;enddisp(‘s’);第30頁2.while語句循環(huán)次數(shù)不確定while語句一般格式為:while(條件)循環(huán)體語句end其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,假如不成立則跳出循環(huán)。第31頁例10從鍵盤輸入若干個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,求這些數(shù)平均值和它們之和。程序如下:sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)summean=sum/cntend第32頁3.break語句和continue語句與循環(huán)構(gòu)造有關(guān)語句尚有break語句和continue語句。它們一般與if語句配合使用。break語句用于終止循環(huán)執(zhí)行。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句下一語句。continue語句控制跳過循環(huán)體中某些語句。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻^循環(huán)體中所有剩下語句,繼續(xù)下一次循環(huán)。第33頁例11求[100,200]之間第一種能被21整除整數(shù)。程序如下:forn=100:200ifrem(n,21)~=0continueendbreakendn第34頁4.循環(huán)嵌套假如一種循環(huán)構(gòu)造循環(huán)體又包括一種循環(huán)構(gòu)造,就稱為循環(huán)嵌套,或稱為多重循環(huán)構(gòu)造。

例12若一種數(shù)等于它各個(gè)真因子之和,則稱該數(shù)為完數(shù),如6=1+2+3,因此6是完數(shù)。求[1,500]之間所有完數(shù)。form=1:500s=0;fork=1:m/2ifrem(m,k)==0s=s+k;endendifm==sdisp(m);endend第35頁函數(shù)文獻(xiàn)基本構(gòu)造函數(shù)文獻(xiàn)由function語句引導(dǎo),其基本構(gòu)造為:function輸出形參表=函數(shù)名(輸入形參表)注釋說明部分函數(shù)體語句其中以function開頭一行為引導(dǎo)行,表達(dá)該M文獻(xiàn)是一種函數(shù)文獻(xiàn)。函數(shù)名命名規(guī)則與變量名相同。輸入形參為函數(shù)輸入?yún)?shù),輸出形參為函數(shù)輸出參數(shù)。當(dāng)輸出形參多于一種時(shí),則應(yīng)當(dāng)用方括號括起來。函數(shù)文獻(xiàn)第36頁例13編寫函數(shù)文獻(xiàn)求半徑為r圓面積和周長。函數(shù)文獻(xiàn)如下:function[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圓半徑%s圓面積%p圓周長%2023年7月30日編s=pi*r*r;p=2*pi*r;第37頁函數(shù)調(diào)用函數(shù)調(diào)用一般格式是:[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)要注意是,函數(shù)調(diào)用時(shí)各實(shí)參出現(xiàn)次序、個(gè)數(shù),應(yīng)與函數(shù)定義時(shí)形參次序、個(gè)數(shù)一致,不然會(huì)犯錯(cuò)。函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給對應(yīng)形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)功能。第38頁

例14利用函數(shù)文獻(xiàn),實(shí)現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(ρ,θ)之間轉(zhuǎn)換。函數(shù)文獻(xiàn)tran.m:function[rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);調(diào)用tran.m命令文獻(xiàn)main1.m:x=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[rho,theta1]=tran(x,y);rhotheta1在MATLAB中,函數(shù)能夠嵌套調(diào)用,即一種函數(shù)能夠調(diào)用別函數(shù),甚至調(diào)用它本身。一種函數(shù)調(diào)用它本身稱為函數(shù)遞歸調(diào)用。第39頁

例15利用函數(shù)遞歸調(diào)用,求n!。n!本身就是以遞歸形式定義:顯然,求n!需要求(n-1)!,這時(shí)可采取遞歸調(diào)用。遞歸調(diào)用函數(shù)文獻(xiàn)factor.m如下:functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;%遞歸調(diào)用求(n-1)!end第40頁函數(shù)參數(shù)可調(diào)性在調(diào)用函數(shù)時(shí),MATLAB用兩個(gè)永久變量nargin和nargout分別統(tǒng)計(jì)調(diào)用該函數(shù)時(shí)輸入實(shí)參和輸出實(shí)參個(gè)數(shù)。只要在函數(shù)文獻(xiàn)中包括這兩個(gè)變量,就能夠精確地懂得該函數(shù)文獻(xiàn)被調(diào)用時(shí)輸入輸出參數(shù)個(gè)數(shù),從而決定函數(shù)如何進(jìn)行處理。第41頁

例16nargin使用方法示例。函數(shù)文獻(xiàn)examp.m:functionfout=examp(a,b,c)ifnargin==1fout=a;elseifnargin==2fout=a+b;elseifnargin==3fout=(a*b*c)/2;end命令文獻(xiàn)mydemo.m:x=[1:3];y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)第42頁全局變量與局部變量全局變量用global命令定義,格式為:global變量名例17全局變量應(yīng)用示例。先建立函數(shù)文獻(xiàn)wadd.m,該函數(shù)將輸入?yún)?shù)加權(quán)相加。functionf=wadd(x,y)globalALPHAB

溫馨提示

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

評論

0/150

提交評論