電氣系統(tǒng)仿真課件5-程序設(shè)計(jì)111_第1頁(yè)
電氣系統(tǒng)仿真課件5-程序設(shè)計(jì)111_第2頁(yè)
電氣系統(tǒng)仿真課件5-程序設(shè)計(jì)111_第3頁(yè)
電氣系統(tǒng)仿真課件5-程序設(shè)計(jì)111_第4頁(yè)
電氣系統(tǒng)仿真課件5-程序設(shè)計(jì)111_第5頁(yè)
已閱讀5頁(yè),還剩83頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第5章MATLAB程序設(shè)計(jì)M文件簡(jiǎn)介MATLAB程序控制結(jié)構(gòu)函數(shù)調(diào)用和參數(shù)傳遞第5章MATLAB程序設(shè)計(jì)MATLAB有兩種工作方式:(1)交互式的命令行工作方式通常matlab以指令驅(qū)動(dòng)模式工作,即在matlab窗口下當(dāng)用戶輸入單行指令時(shí),matlab立即處理這條指令,并顯示結(jié)果,這就是matlab命令行方式。MATLAB有兩種工作方式:缺點(diǎn):a.命令行操作時(shí),matlab窗口只允許一次執(zhí)行一行上的一個(gè)或幾個(gè)語(yǔ)句。b.命令行方式程序可讀性差c.不能存儲(chǔ),當(dāng)處理復(fù)雜問(wèn)題和大量數(shù)據(jù)時(shí)是不方便的,應(yīng)編寫(xiě)成能存儲(chǔ)的程序文件。缺點(diǎn):(2)M文件的程序工作方式

較多的命令重復(fù)輸入將要輸入的所有指令按順序放到一個(gè)擴(kuò)展名為“.m”的文本文件中,每次運(yùn)行時(shí)只要輸入M文件的文件名即可。這種工作模式稱(chēng)為M文件的程序工作方式。

(2)M文件的程序工作方式5.1M文件簡(jiǎn)介用MATLAB語(yǔ)言編寫(xiě)的程序,稱(chēng)為M文件。5.1.1M文件的建立與編輯

M文件是一個(gè)文本文件,它可以用任何編輯程序來(lái)建立和編輯,而一般常用且最為方便的是使用MATLAB提供的文本編輯器。1、建立新的M文件啟動(dòng)MATLAB文本編輯器有3種方法:方法一:菜單操作

FileNewM-fileMATLABEditor窗口

輸入M文件的內(nèi)容并存盤(pán)。5.1M文件簡(jiǎn)介5.1.1M文件的建立與編輯方法二:命令操作在MATLAB命令窗口輸入命令edit,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤(pán)。

方法三:命令按鈕操作單擊MATLAB主窗口工具欄上的NewM-File命令按鈕,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤(pán)。

注意:M文件的存放位置默認(rèn)情況下是

MATLAB安裝目錄下的work子目錄。方法二:命令操作方法三:命令按鈕操作注意:M文件的存放位置默2、編輯已有的M文件方法一:菜單操作

FileOpenOpen對(duì)話框M文件方法二:命令操作

在MATLAB命令窗口輸入命令:

edit文件名方法三:命令按鈕操作工具欄OpenFile選擇所需打開(kāi)的M文件。

2、編輯已有的M文件方法二:命令操作方法三:命令

MATLAB提供了兩種源程序文件格式:腳本文件和函數(shù)文件,這兩種文件的擴(kuò)展名均為“.m”。

M腳本(Scripts)文件(命令行文件):沒(méi)有輸入?yún)?shù),也不返回輸出參數(shù);

M函數(shù)(Functions)文件:可以輸入?yún)?shù),也可返回輸出參數(shù)。

5.1.2M腳本文件和M函數(shù)文件MATLAB提供了兩種源程序文件格式:腳本文一、M腳本文件(命令行文件)

本質(zhì):是一串指令的集合,與在命令窗口逐行執(zhí)行文件中的所有指令,其結(jié)果是一樣的。將需要運(yùn)行的命令編輯到一個(gè)命令文件中,然后在MATLAB命令窗口直接輸入該命令文件的名字(執(zhí)行方法),就會(huì)順序執(zhí)行命令文件中的命令,該文件稱(chēng)為腳本文件。

一、M腳本文件(命令行文件)本質(zhì):是一串指令的(1)腳本文件中的命令格式和前后順序,與在命令窗口中輸入的指令無(wú)區(qū)別;(2)與在命令窗口中直接運(yùn)行命令一樣,腳本文件產(chǎn)生的變量都駐留在MATLAB的workspace中,可以方便查看變量;腳本文件可以直接訪問(wèn)workspace中的所有數(shù)據(jù);(3)M文件的文件名要避免與MATLAB內(nèi)置函數(shù)與工具箱中的函數(shù)重名,并要放在搜索路徑內(nèi)。(1)腳本文件中的命令格式和前后順序,與在命令窗口中輸入的指例1:建立一個(gè)腳本文件,將變量a、b的值互換。解:建立try1.m文件a=1:9;b=[111213;141516;171819];c=a;a=b;b=c;ab指令窗口執(zhí)行該程序>>try1a=111213141516171819b=123456789例1:建立一個(gè)腳本文件,將變量a、b的值互換。指令窗口執(zhí)行該二、M函數(shù)文件函數(shù)文件(Functionfile)是另一種形式的M文件,每一個(gè)函數(shù)文件都定義一個(gè)函數(shù)。1.腳本文件和函數(shù)文件的區(qū)別:(1)M腳本文件不需要輸入任何參數(shù),也不返回任何參數(shù),主要是為了解決在命令窗口中反復(fù)輸入命令的繁瑣操作;M函數(shù)文件通常包含輸入?yún)?shù),也可以返回輸出參數(shù),主要解決參數(shù)傳遞和函數(shù)調(diào)用的問(wèn)題。(2)腳本文件對(duì)workspace中的變量進(jìn)行操作;函數(shù)文件的變量為局域變量,只有其輸出的變量保存在workspace中。二、M函數(shù)文件2.函數(shù)文件格式

function輸出形參表=函數(shù)名(輸入形參表)函數(shù)幫助信息行函數(shù)體----是函數(shù)的功能實(shí)現(xiàn)部分

特定規(guī)則:①

m函數(shù)文件第一行必須以單詞function作為引導(dǎo)詞;②函數(shù)信息行:給出函數(shù)的幫助信息,幫助信息要從%開(kāi)頭,并放在一行的開(kāi)頭,在指令窗口中用help+文件名可查詢到;2.函數(shù)文件格式特定規(guī)則:③

函數(shù)名的命名規(guī)則與變量名相同;m函數(shù)文件的文件名建議直接用函數(shù)名.m,也可以與函數(shù)名不同,但是調(diào)用時(shí)使用文件名;④當(dāng)函數(shù)的輸出形參多于1個(gè)時(shí),應(yīng)用方括號(hào),參數(shù)之間用逗號(hào)隔開(kāi):function[a,b]=mfile(x,y);當(dāng)函數(shù)無(wú)輸出參數(shù)時(shí),輸出參數(shù)項(xiàng)應(yīng)為空,或者用空的中括號(hào)表示:

functionmfile(x,y)

或者function[]=mfile(x,y);⑤函數(shù)執(zhí)行后,只保留最后的返回結(jié)果,不保留任何中間過(guò)程。程序中的變量均為局部變量,不保存在工作空間中,其變量只在函數(shù)運(yùn)行期間有效,隨函數(shù)調(diào)用的結(jié)束而從工作空間消除。

③函數(shù)名的命名規(guī)則與變量名相同;m函數(shù)文件的文件名建議直接【例】

編寫(xiě)函數(shù)文件求小于任意自然數(shù)n的Fibonacci數(shù)列各項(xiàng)。

functionf=ffib(n)%用于求Fibonacci數(shù)列的函數(shù)文件

%f=ffib(n)%1999年9月30日編

f=[1,1];i=1;whilef(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;end將以上函數(shù)文件以文件名ffib.m存盤(pán),【例】編寫(xiě)函數(shù)文件求小于任意自然數(shù)n的Fibonacci2.函數(shù)調(diào)用函數(shù)文件編制好后,在MATLAB命令窗口輸入以下命令,可求小于2000的Fibonacci數(shù)。

ffib(2000)函數(shù)調(diào)用的一般格式是:

[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)四.函數(shù)文件2.函數(shù)調(diào)用函數(shù)文件編制好后,在MATLAB命令窗口輸入以下【例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);theta=atan(y/x);調(diào)用tran.m的命令文件main1.m:[gam,the]=tran(30,40);四.函數(shù)文件【例10】利用函數(shù)文件,實(shí)現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(解:

functionli2%ab互換

a=1:9;

b=[111213;141516;171819];c=a;a=b;b=c;ab例2:建立一個(gè)函數(shù)文件,將變量a、b的值互換。解:例2:建立一個(gè)函數(shù)文件,將變量a、b的值互換。例3:建立函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c解:

functionc=f2c(f)c=5*(f-32)/9>>f2c(100)c=37.7778

例3:建立函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c【例11】

利用函數(shù)的遞歸調(diào)用,求n!。

functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;endreturn;%返回在命令文件main2.m中調(diào)用函數(shù)文件factor.m:

fori=1:10fac(i)=factor(i);endfac程序運(yùn)行結(jié)果是:

fac=Columns1through612624120720Columns7through10504403203628803628800四.函數(shù)文件【例11】利用函數(shù)的遞歸調(diào)用,求n!。funct1.input函數(shù):用于向計(jì)算機(jī)輸入一個(gè)參數(shù)。調(diào)用格式:A=input(提示信息,選項(xiàng));注:‘s’選項(xiàng),則允許用戶輸入一個(gè)字符串。例如想輸入一個(gè)人的姓名,可采用命令

xm=input('What''syourname:','s')【例2】

求一元二次方程a2+bx+c=0的根。二.?dāng)?shù)據(jù)的輸入輸出

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)]將該程序以aa.m文件存盤(pán),然后運(yùn)行aa.m文件。1.input函數(shù):用于向計(jì)算機(jī)輸入一個(gè)參數(shù)。二.?dāng)?shù)據(jù)的輸二.?dāng)?shù)據(jù)的輸入輸出

2.disp函數(shù):命令窗口輸出函數(shù)。調(diào)用格式:disp(輸出項(xiàng))注:輸出項(xiàng)為字符串或矩陣。例如

A='Hello,MATLAB';disp(A)輸出為:Hello,MATLAB二.?dāng)?shù)據(jù)的輸入輸出2.disp函數(shù):命令窗口輸出函數(shù)。5.2MATLAB程序控制結(jié)構(gòu)5.2.1條件分支結(jié)構(gòu)條件分支結(jié)構(gòu)——根據(jù)一定條件來(lái)執(zhí)行的各條語(yǔ)句。1.if語(yǔ)句

(1)單分支if語(yǔ)句:

if條件語(yǔ)句組

end

當(dāng)條件成立時(shí),則執(zhí)行語(yǔ)句組,執(zhí)行完之后繼續(xù)執(zhí)行if語(yǔ)句的后繼語(yǔ)句,若條件不成立,則直接執(zhí)行if語(yǔ)句的后繼語(yǔ)句。5.2MATLAB程序控制結(jié)構(gòu)(2)雙分支if語(yǔ)句:

if條件語(yǔ)句組1else

語(yǔ)句組2end

當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2,語(yǔ)句組1或語(yǔ)句組2執(zhí)行后,再執(zhí)行if語(yǔ)句的后繼語(yǔ)句。(2)雙分支if語(yǔ)句:(3)多分支if語(yǔ)句:

if條件1

語(yǔ)句組1

elseif

條件2

語(yǔ)句組2……

elseif

條件m

語(yǔ)句組melse

語(yǔ)句組nend(3)多分支if語(yǔ)句:functiony=shuru(x)ifx>=1

y=2*x.^2+1elseif(x<1)&(x>-1)y=0elsey=-x.^3end例4:計(jì)算函數(shù)y=functiony=shuru(x)例4:計(jì)算函數(shù)y=繪出函數(shù)的圖像。x=-3:0.1:3;ifx>=1y=2*x.^2+1;plot(x,y)elseif-1<x<1y=5;plot(x,y)else

y=-x.^3;plot(x,y)end繪出函數(shù)2、Switch語(yǔ)句如果在一個(gè)程序中,必須針對(duì)某個(gè)變量不同取值情況進(jìn)行相應(yīng)操作,switch語(yǔ)句比if語(yǔ)句更方便。switch語(yǔ)句用于實(shí)現(xiàn)多重選擇。

2、Switch語(yǔ)句語(yǔ)法:

switch分支條件(函數(shù)、變量、表達(dá)式)

case條件1(標(biāo)量、字符串) 執(zhí)行語(yǔ)句1 case{條件2條件3條件4…}

執(zhí)行語(yǔ)句2 case… … otherwise

執(zhí)行語(yǔ)句n end語(yǔ)法:例6:編寫(xiě)函數(shù)文件,將百分制成績(jī)轉(zhuǎn)換為五級(jí)制的成績(jī)functionf=trangrade(x)switchfix(x/10)case{109}f='A';case8f='B';case7f='C';case6f='D';otherwisef='E';end運(yùn)行結(jié)果:>>trangrade(97)ans=A>>trangrade(67)ans=D>>trangrade(55)ans=E例6:編寫(xiě)函數(shù)文件,將百分制成績(jī)轉(zhuǎn)換為五級(jí)制的成績(jī)運(yùn)行結(jié)果:【例6】根據(jù)變量num的值來(lái)決定顯示的內(nèi)容。

num=input('請(qǐng)輸入一個(gè)數(shù)');switchnumcase-1disp('Iamateacher.');case0disp('Iamastudent.');case1disp('Youareateacher.');otherwisedisp('Youareastudent.');end三.程序設(shè)計(jì)(一)選擇結(jié)構(gòu)【例6】根據(jù)變量num的值來(lái)決定顯示的內(nèi)容。n5.2.2循環(huán)結(jié)構(gòu)1.while循環(huán)

while循環(huán)以不定的次數(shù)重復(fù)執(zhí)行一組語(yǔ)句。語(yǔ)法為:

while邏輯表達(dá)式循環(huán)體語(yǔ)句

endwhile語(yǔ)句執(zhí)行過(guò)程,只要表達(dá)式里面的所有元素為真,就執(zhí)行while和end之間的語(yǔ)句,否則就結(jié)束循環(huán)。在設(shè)計(jì)while循環(huán)時(shí),應(yīng)在循環(huán)體內(nèi)有修改“邏輯表達(dá)式”的部分,確保執(zhí)行了一定次數(shù)后可以退出循環(huán)。5.2.2循環(huán)結(jié)構(gòu)例8:用while循環(huán)求1~100間整數(shù)的和

sum=0;i=1;whilei<=100sum=sum+i;i=i+1;endsumsum=5050例8:用while循環(huán)求1~100間整數(shù)的和例9:編寫(xiě)函數(shù)文件求小于自然數(shù)n的婓波納契數(shù)列各項(xiàng)。該數(shù)列是一整數(shù)數(shù)列,其中每個(gè)數(shù)等于前面兩數(shù)之和。已知前兩項(xiàng)為11。functionf=fbnq(n)%計(jì)算婓波納契數(shù)列各項(xiàng)f=[11];i=1;whilef(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;end在指令窗口輸入>>fbnq(30)ans=1123581321例9:編寫(xiě)函數(shù)文件求小于自然數(shù)n的婓波納契數(shù)列各項(xiàng)。該數(shù)列是例10:按照下面的表達(dá)式計(jì)算,直至1/n!小于0.001。建立腳本文件ex10.merror=0.001;x=1;y=0;n=1;whilex>errory=y+x;x=x/n;n=n+1;endy運(yùn)行結(jié)果:>>ex10y=2.7181例10:按照下面的表達(dá)式計(jì)算,直至1/n!小于0.001。建2.for循環(huán)

for循環(huán)允許一條或者一組語(yǔ)句被重復(fù)執(zhí)行預(yù)先指定的次數(shù)。for循環(huán)的語(yǔ)法為:

for循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)式3

循環(huán)體

end循環(huán)次數(shù):說(shuō)明:表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長(zhǎng),表達(dá)式3的值為循環(huán)終值,當(dāng)步長(zhǎng)為1時(shí),可以省略。表達(dá)式的值可以是正整數(shù)、負(fù)整數(shù)或者小數(shù)。循環(huán)次數(shù)如何計(jì)算?2.for循環(huán)循環(huán)次數(shù):說(shuō)明:表達(dá)式1的值為循環(huán)變量的初值例11:用for循環(huán)求1~100間整數(shù)的和sum=0;fori=1:100sum=sum+i;endsum例11:用for循環(huán)求1~100間整數(shù)的和sum=0;例12:使用for循環(huán)計(jì)算以及i!(i=1:10)的值。解:編寫(xiě)腳本文件forsum.msum=0;part=1;fori=1:10part=part*i;fprintf('part(%d)=%d\n',i,part)sum=sum+part;endfprintf('sum=%d\n',sum)運(yùn)行結(jié)果:>>forsumpart(1)=1part(2)=2part(3)=6part(4)=24part(5)=120part(6)=720part(7)=5040part(8)=40320part(9)=362880part(10)=3628800sum=4037913例12:使用for循環(huán)計(jì)算以及i!(i=12.主函數(shù)和子函數(shù)主函數(shù)和子函數(shù)的區(qū)別:(1)MATLAB允許一個(gè)M函數(shù)文件包含多個(gè)函數(shù)的代碼,其中第一個(gè)出現(xiàn)的函數(shù)稱(chēng)為主函數(shù),其余的函數(shù)為子函數(shù)。(2)保存時(shí)所用的函數(shù)名稱(chēng)與主函數(shù)定義名相同。(3)主函數(shù)可以在M文件外部調(diào)用,而子函數(shù)不行。(4)同一文件的主函數(shù)和子函數(shù)的工作空間是相互獨(dú)立的。2.主函數(shù)和子函數(shù)例18:編寫(xiě)一函數(shù),要求輸入任意兩個(gè)數(shù)后,求出這兩數(shù)之和與絕對(duì)值之和的積。functionch=sub(x,y)%主函數(shù)ch=sub1(x,y)*sub2(x,y);

functionch=sub1(x,y)%子函數(shù)1ch=x+y;functionch=sub2(x,y)%子函數(shù)2ch=abs(x)+abs(y);運(yùn)行結(jié)果:>>sub(4,3)ans=49>>sub(4,-3)ans=7例18:編寫(xiě)一函數(shù),要求輸入任意兩個(gè)數(shù)后,求出這兩數(shù)之和與絕5.3.2局部變量和全局變量1.局部變量(LocalVariables)局部變量是在函數(shù)體內(nèi)部的變量,其影響范圍是本函數(shù)內(nèi)部,而且不加載到MATLAB的工作空間。局部變量只在函數(shù)執(zhí)行期間存在,當(dāng)函數(shù)執(zhí)行完變量就消失。2.全局變量(GlobalVariables)全局變量是可以在不同的函數(shù)工作空間和MATLAB工作空間中共享使用的變量。在使用前必須用global定義,而且在任何使用該變量的函數(shù)中都要加以定義,即使在命令窗口中也不加以例外。5.3.2局部變量和全局變量functionf=global_exam(x,y)%define2globalvariablesglobalABf=A*x+B*y;在命令窗口中輸入>>globalAB>>A=1;>>B=2;>>f=global_exam(2,3)f=8functionf=global_exam(x,y)5.3.3函數(shù)的參數(shù)1.函數(shù)的調(diào)用函數(shù)的調(diào)用方式:[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)2.函數(shù)參數(shù)的個(gè)數(shù)nargin:該函數(shù)輸入實(shí)參的個(gè)數(shù)nargout:該函數(shù)輸出實(shí)參的個(gè)數(shù)nargin在函數(shù)體內(nèi)獲得實(shí)際輸入變量個(gè)數(shù)nargout在函數(shù)體內(nèi)獲得實(shí)際輸出變量個(gè)數(shù)nargin(‘fun’)在函數(shù)體外獲取定義的輸入?yún)?shù)個(gè)數(shù)nargout(‘fun’)在函數(shù)體外獲取定義的輸出參數(shù)個(gè)數(shù)5.3.3函數(shù)的參數(shù)nargin在函數(shù)體內(nèi)獲得實(shí)際輸入變例19:編程實(shí)現(xiàn),若只輸入一個(gè)變量,系統(tǒng)提示輸入錯(cuò)誤,若輸入兩個(gè)、三個(gè)變量,則將各變量相加,將和輸出。>>nargintest(1,2,3)ans=6>>nargintest(1,2,3,4)???Errorusing==>nargintestToomanyinputarguments.>>nargintest(1)???Errorusing==>nargintestNotenoughinputarguments>>nargintest(1,2)ans=3

functionf=nargintest(a,b,c)ifnargin<=1error('Notenoughinputarguments');elseifnargin==2f=a+b;elseifnargin==3f=a+b+c;end例19:編程實(shí)現(xiàn),若只輸入一個(gè)變量,系統(tǒng)提示輸入錯(cuò)誤,若輸入第5章MATLAB程序設(shè)計(jì)M文件簡(jiǎn)介MATLAB程序控制結(jié)構(gòu)函數(shù)調(diào)用和參數(shù)傳遞第5章MATLAB程序設(shè)計(jì)MATLAB有兩種工作方式:(1)交互式的命令行工作方式通常matlab以指令驅(qū)動(dòng)模式工作,即在matlab窗口下當(dāng)用戶輸入單行指令時(shí),matlab立即處理這條指令,并顯示結(jié)果,這就是matlab命令行方式。MATLAB有兩種工作方式:缺點(diǎn):a.命令行操作時(shí),matlab窗口只允許一次執(zhí)行一行上的一個(gè)或幾個(gè)語(yǔ)句。b.命令行方式程序可讀性差c.不能存儲(chǔ),當(dāng)處理復(fù)雜問(wèn)題和大量數(shù)據(jù)時(shí)是不方便的,應(yīng)編寫(xiě)成能存儲(chǔ)的程序文件。缺點(diǎn):(2)M文件的程序工作方式

較多的命令重復(fù)輸入將要輸入的所有指令按順序放到一個(gè)擴(kuò)展名為“.m”的文本文件中,每次運(yùn)行時(shí)只要輸入M文件的文件名即可。這種工作模式稱(chēng)為M文件的程序工作方式。

(2)M文件的程序工作方式5.1M文件簡(jiǎn)介用MATLAB語(yǔ)言編寫(xiě)的程序,稱(chēng)為M文件。5.1.1M文件的建立與編輯

M文件是一個(gè)文本文件,它可以用任何編輯程序來(lái)建立和編輯,而一般常用且最為方便的是使用MATLAB提供的文本編輯器。1、建立新的M文件啟動(dòng)MATLAB文本編輯器有3種方法:方法一:菜單操作

FileNewM-fileMATLABEditor窗口

輸入M文件的內(nèi)容并存盤(pán)。5.1M文件簡(jiǎn)介5.1.1M文件的建立與編輯方法二:命令操作在MATLAB命令窗口輸入命令edit,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤(pán)。

方法三:命令按鈕操作單擊MATLAB主窗口工具欄上的NewM-File命令按鈕,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤(pán)。

注意:M文件的存放位置默認(rèn)情況下是

MATLAB安裝目錄下的work子目錄。方法二:命令操作方法三:命令按鈕操作注意:M文件的存放位置默2、編輯已有的M文件方法一:菜單操作

FileOpenOpen對(duì)話框M文件方法二:命令操作

在MATLAB命令窗口輸入命令:

edit文件名方法三:命令按鈕操作工具欄OpenFile選擇所需打開(kāi)的M文件。

2、編輯已有的M文件方法二:命令操作方法三:命令

MATLAB提供了兩種源程序文件格式:腳本文件和函數(shù)文件,這兩種文件的擴(kuò)展名均為“.m”。

M腳本(Scripts)文件(命令行文件):沒(méi)有輸入?yún)?shù),也不返回輸出參數(shù);

M函數(shù)(Functions)文件:可以輸入?yún)?shù),也可返回輸出參數(shù)。

5.1.2M腳本文件和M函數(shù)文件MATLAB提供了兩種源程序文件格式:腳本文一、M腳本文件(命令行文件)

本質(zhì):是一串指令的集合,與在命令窗口逐行執(zhí)行文件中的所有指令,其結(jié)果是一樣的。將需要運(yùn)行的命令編輯到一個(gè)命令文件中,然后在MATLAB命令窗口直接輸入該命令文件的名字(執(zhí)行方法),就會(huì)順序執(zhí)行命令文件中的命令,該文件稱(chēng)為腳本文件。

一、M腳本文件(命令行文件)本質(zhì):是一串指令的(1)腳本文件中的命令格式和前后順序,與在命令窗口中輸入的指令無(wú)區(qū)別;(2)與在命令窗口中直接運(yùn)行命令一樣,腳本文件產(chǎn)生的變量都駐留在MATLAB的workspace中,可以方便查看變量;腳本文件可以直接訪問(wèn)workspace中的所有數(shù)據(jù);(3)M文件的文件名要避免與MATLAB內(nèi)置函數(shù)與工具箱中的函數(shù)重名,并要放在搜索路徑內(nèi)。(1)腳本文件中的命令格式和前后順序,與在命令窗口中輸入的指例1:建立一個(gè)腳本文件,將變量a、b的值互換。解:建立try1.m文件a=1:9;b=[111213;141516;171819];c=a;a=b;b=c;ab指令窗口執(zhí)行該程序>>try1a=111213141516171819b=123456789例1:建立一個(gè)腳本文件,將變量a、b的值互換。指令窗口執(zhí)行該二、M函數(shù)文件函數(shù)文件(Functionfile)是另一種形式的M文件,每一個(gè)函數(shù)文件都定義一個(gè)函數(shù)。1.腳本文件和函數(shù)文件的區(qū)別:(1)M腳本文件不需要輸入任何參數(shù),也不返回任何參數(shù),主要是為了解決在命令窗口中反復(fù)輸入命令的繁瑣操作;M函數(shù)文件通常包含輸入?yún)?shù),也可以返回輸出參數(shù),主要解決參數(shù)傳遞和函數(shù)調(diào)用的問(wèn)題。(2)腳本文件對(duì)workspace中的變量進(jìn)行操作;函數(shù)文件的變量為局域變量,只有其輸出的變量保存在workspace中。二、M函數(shù)文件2.函數(shù)文件格式

function輸出形參表=函數(shù)名(輸入形參表)函數(shù)幫助信息行函數(shù)體----是函數(shù)的功能實(shí)現(xiàn)部分

特定規(guī)則:①

m函數(shù)文件第一行必須以單詞function作為引導(dǎo)詞;②函數(shù)信息行:給出函數(shù)的幫助信息,幫助信息要從%開(kāi)頭,并放在一行的開(kāi)頭,在指令窗口中用help+文件名可查詢到;2.函數(shù)文件格式特定規(guī)則:③

函數(shù)名的命名規(guī)則與變量名相同;m函數(shù)文件的文件名建議直接用函數(shù)名.m,也可以與函數(shù)名不同,但是調(diào)用時(shí)使用文件名;④當(dāng)函數(shù)的輸出形參多于1個(gè)時(shí),應(yīng)用方括號(hào),參數(shù)之間用逗號(hào)隔開(kāi):function[a,b]=mfile(x,y);當(dāng)函數(shù)無(wú)輸出參數(shù)時(shí),輸出參數(shù)項(xiàng)應(yīng)為空,或者用空的中括號(hào)表示:

functionmfile(x,y)

或者function[]=mfile(x,y);⑤函數(shù)執(zhí)行后,只保留最后的返回結(jié)果,不保留任何中間過(guò)程。程序中的變量均為局部變量,不保存在工作空間中,其變量只在函數(shù)運(yùn)行期間有效,隨函數(shù)調(diào)用的結(jié)束而從工作空間消除。

③函數(shù)名的命名規(guī)則與變量名相同;m函數(shù)文件的文件名建議直接【例】

編寫(xiě)函數(shù)文件求小于任意自然數(shù)n的Fibonacci數(shù)列各項(xiàng)。

functionf=ffib(n)%用于求Fibonacci數(shù)列的函數(shù)文件

%f=ffib(n)%1999年9月30日編

f=[1,1];i=1;whilef(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;end將以上函數(shù)文件以文件名ffib.m存盤(pán),【例】編寫(xiě)函數(shù)文件求小于任意自然數(shù)n的Fibonacci2.函數(shù)調(diào)用函數(shù)文件編制好后,在MATLAB命令窗口輸入以下命令,可求小于2000的Fibonacci數(shù)。

ffib(2000)函數(shù)調(diào)用的一般格式是:

[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)四.函數(shù)文件2.函數(shù)調(diào)用函數(shù)文件編制好后,在MATLAB命令窗口輸入以下【例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);theta=atan(y/x);調(diào)用tran.m的命令文件main1.m:[gam,the]=tran(30,40);四.函數(shù)文件【例10】利用函數(shù)文件,實(shí)現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(解:

functionli2%ab互換

a=1:9;

b=[111213;141516;171819];c=a;a=b;b=c;ab例2:建立一個(gè)函數(shù)文件,將變量a、b的值互換。解:例2:建立一個(gè)函數(shù)文件,將變量a、b的值互換。例3:建立函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c解:

functionc=f2c(f)c=5*(f-32)/9>>f2c(100)c=37.7778

例3:建立函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c【例11】

利用函數(shù)的遞歸調(diào)用,求n!。

functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;endreturn;%返回在命令文件main2.m中調(diào)用函數(shù)文件factor.m:

fori=1:10fac(i)=factor(i);endfac程序運(yùn)行結(jié)果是:

fac=Columns1through612624120720Columns7through10504403203628803628800四.函數(shù)文件【例11】利用函數(shù)的遞歸調(diào)用,求n!。funct1.input函數(shù):用于向計(jì)算機(jī)輸入一個(gè)參數(shù)。調(diào)用格式:A=input(提示信息,選項(xiàng));注:‘s’選項(xiàng),則允許用戶輸入一個(gè)字符串。例如想輸入一個(gè)人的姓名,可采用命令

xm=input('What''syourname:','s')【例2】

求一元二次方程a2+bx+c=0的根。二.?dāng)?shù)據(jù)的輸入輸出

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)]將該程序以aa.m文件存盤(pán),然后運(yùn)行aa.m文件。1.input函數(shù):用于向計(jì)算機(jī)輸入一個(gè)參數(shù)。二.?dāng)?shù)據(jù)的輸二.?dāng)?shù)據(jù)的輸入輸出

2.disp函數(shù):命令窗口輸出函數(shù)。調(diào)用格式:disp(輸出項(xiàng))注:輸出項(xiàng)為字符串或矩陣。例如

A='Hello,MATLAB';disp(A)輸出為:Hello,MATLAB二.?dāng)?shù)據(jù)的輸入輸出2.disp函數(shù):命令窗口輸出函數(shù)。5.2MATLAB程序控制結(jié)構(gòu)5.2.1條件分支結(jié)構(gòu)條件分支結(jié)構(gòu)——根據(jù)一定條件來(lái)執(zhí)行的各條語(yǔ)句。1.if語(yǔ)句

(1)單分支if語(yǔ)句:

if條件語(yǔ)句組

end

當(dāng)條件成立時(shí),則執(zhí)行語(yǔ)句組,執(zhí)行完之后繼續(xù)執(zhí)行if語(yǔ)句的后繼語(yǔ)句,若條件不成立,則直接執(zhí)行if語(yǔ)句的后繼語(yǔ)句。5.2MATLAB程序控制結(jié)構(gòu)(2)雙分支if語(yǔ)句:

if條件語(yǔ)句組1else

語(yǔ)句組2end

當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2,語(yǔ)句組1或語(yǔ)句組2執(zhí)行后,再執(zhí)行if語(yǔ)句的后繼語(yǔ)句。(2)雙分支if語(yǔ)句:(3)多分支if語(yǔ)句:

if條件1

語(yǔ)句組1

elseif

條件2

語(yǔ)句組2……

elseif

條件m

語(yǔ)句組melse

語(yǔ)句組nend(3)多分支if語(yǔ)句:functiony=shuru(x)ifx>=1

y=2*x.^2+1elseif(x<1)&(x>-1)y=0elsey=-x.^3end例4:計(jì)算函數(shù)y=functiony=shuru(x)例4:計(jì)算函數(shù)y=繪出函數(shù)的圖像。x=-3:0.1:3;ifx>=1y=2*x.^2+1;plot(x,y)elseif-1<x<1y=5;plot(x,y)else

y=-x.^3;plot(x,y)end繪出函數(shù)2、Switch語(yǔ)句如果在一個(gè)程序中,必須針對(duì)某個(gè)變量不同取值情況進(jìn)行相應(yīng)操作,switch語(yǔ)句比if語(yǔ)句更方便。switch語(yǔ)句用于實(shí)現(xiàn)多重選擇。

2、Switch語(yǔ)句語(yǔ)法:

switch分支條件(函數(shù)、變量、表達(dá)式)

case條件1(標(biāo)量、字符串) 執(zhí)行語(yǔ)句1 case{條件2條件3條件4…}

執(zhí)行語(yǔ)句2 case… … otherwise

執(zhí)行語(yǔ)句n end語(yǔ)法:例6:編寫(xiě)函數(shù)文件,將百分制成績(jī)轉(zhuǎn)換為五級(jí)制的成績(jī)functionf=trangrade(x)switchfix(x/10)case{109}f='A';case8f='B';case7f='C';case6f='D';otherwisef='E';end運(yùn)行結(jié)果:>>trangrade(97)ans=A>>trangrade(67)ans=D>>trangrade(55)ans=E例6:編寫(xiě)函數(shù)文件,將百分制成績(jī)轉(zhuǎn)換為五級(jí)制的成績(jī)運(yùn)行結(jié)果:【例6】根據(jù)變量num的值來(lái)決定顯示的內(nèi)容。

num=input('請(qǐng)輸入一個(gè)數(shù)');switchnumcase-1disp('Iamateacher.');case0disp('Iamastudent.');case1disp('Youareateacher.');otherwisedisp('Youareastudent.');end三.程序設(shè)計(jì)(一)選擇結(jié)構(gòu)【例6】根據(jù)變量num的值來(lái)決定顯示的內(nèi)容。n5.2.2循環(huán)結(jié)構(gòu)1.while循環(huán)

while循環(huán)以不定的次數(shù)重復(fù)執(zhí)行一組語(yǔ)句。語(yǔ)法為:

while邏輯表達(dá)式循環(huán)體語(yǔ)句

endwhile語(yǔ)句執(zhí)行過(guò)程,只要表達(dá)式里面的所有元素為真,就執(zhí)行while和end之間的語(yǔ)句,否則就結(jié)束循環(huán)。在設(shè)計(jì)while循環(huán)時(shí),應(yīng)在循環(huán)體內(nèi)有修改“邏輯表達(dá)式”的部分,確保執(zhí)行了一定次數(shù)后可以退出循環(huán)。5.2.2循環(huán)結(jié)構(gòu)例8:用while循環(huán)求1~100間整數(shù)的和

sum=0;i=1;whilei<=100sum=sum+i;i=i+1;endsumsum=5050例8:用while循環(huán)求1~100間整數(shù)的和例9:編寫(xiě)函數(shù)文件求小于自然數(shù)n的婓波納契數(shù)列各項(xiàng)。該數(shù)列是一整數(shù)數(shù)列,其中每個(gè)數(shù)等于前面兩數(shù)之和。已知前兩項(xiàng)為11。functionf=fbnq(n)%計(jì)算婓波納契數(shù)列各項(xiàng)f=[11];i=1;whilef(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;end在指令窗口輸入>>fbnq(30)ans=1123581321例9:編寫(xiě)函數(shù)文件求小于自然數(shù)n的婓波納契數(shù)列各項(xiàng)。該數(shù)列是例10:按照下面的表達(dá)式計(jì)算,直至1/n!小于0.001。建立腳本文件ex10.merror=0.001;x=1;y=0;n=1;whilex>errory=y+x;x=x/n;n=n+1;endy運(yùn)行結(jié)果:>>ex10y=2.7181例10:按照下面的表達(dá)式計(jì)算,直至1/n!小于0.001。建2.for循環(huán)

for循環(huán)允許一條或者一組語(yǔ)句被重復(fù)執(zhí)行預(yù)先指定的次數(shù)。for循環(huán)的語(yǔ)法為:

for循環(huán)變量=表達(dá)式1:表達(dá)式2:表達(dá)式3

循環(huán)體

end循環(huán)次數(shù):說(shuō)明:表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長(zhǎng),表達(dá)式3的值為循環(huán)終值,當(dāng)步長(zhǎng)為1時(shí),可以省略。表達(dá)式的值可以是正整數(shù)、負(fù)整數(shù)或者小數(shù)。循環(huán)次數(shù)如何計(jì)算?2.for循環(huán)循環(huán)次數(shù):說(shuō)明:表達(dá)式1的值為循環(huán)變量的初值例11:用for循環(huán)求1~100間整數(shù)的和sum=0;fori=1:100sum=sum+i;endsum例11:用for循環(huán)求1~100間整數(shù)的和sum=0;例12:使用for循環(huán)計(jì)算以及i!(i=1:10)的值。解:編寫(xiě)腳本文件forsum.msum=0;part=1;f

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論