Matlab在電氣工程中的應(yīng)用:第5章 MATLAB程序設(shè)計(jì)
《Matlab在電氣工程中的應(yīng)用:第5章 MATLAB程序設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《Matlab在電氣工程中的應(yīng)用:第5章 MATLAB程序設(shè)計(jì)(41頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、1第第5章章 MATLAB程序設(shè)計(jì)程序設(shè)計(jì)M文件簡(jiǎn)介文件簡(jiǎn)介MATLAB程序控制結(jié)構(gòu)程序控制結(jié)構(gòu)函數(shù)調(diào)用和參數(shù)傳遞函數(shù)調(diào)用和參數(shù)傳遞2一、一、MATLB程序的基本設(shè)計(jì)原則程序的基本設(shè)計(jì)原則1.“”后面的內(nèi)容是程序的注解,要善于運(yùn)用注解后面的內(nèi)容是程序的注解,要善于運(yùn)用注解使程序更具可讀性。使程序更具可讀性。2.養(yǎng)成在主程序開(kāi)頭用養(yǎng)成在主程序開(kāi)頭用clear指令清除變量的習(xí)慣,指令清除變量的習(xí)慣,以消除工作空間中其他變量對(duì)程序運(yùn)行的影響。以消除工作空間中其他變量對(duì)程序運(yùn)行的影響。3.參數(shù)值要集中放在程序的開(kāi)始部分,以便維護(hù)。參數(shù)值要集中放在程序的開(kāi)始部分,以便維護(hù)。要充分利用要充分利用MATLA
2、B工具箱提供的指令來(lái)執(zhí)行所工具箱提供的指令來(lái)執(zhí)行所要進(jìn)行的運(yùn)算,在語(yǔ)句行之后輸入分號(hào)使其及中要進(jìn)行的運(yùn)算,在語(yǔ)句行之后輸入分號(hào)使其及中間結(jié)果不在屏幕上顯示,以提高執(zhí)行速度。間結(jié)果不在屏幕上顯示,以提高執(zhí)行速度。3 4.程序盡量模塊化,也就是采用主程序調(diào)用子程程序盡量模塊化,也就是采用主程序調(diào)用子程序的方法,將所有子程序合并在一起來(lái)執(zhí)行全部的序的方法,將所有子程序合并在一起來(lái)執(zhí)行全部的操作。操作。5.充分利用充分利用Debugger來(lái)進(jìn)行程序的調(diào)試(設(shè)置斷來(lái)進(jìn)行程序的調(diào)試(設(shè)置斷點(diǎn)、單步執(zhí)行、連續(xù)執(zhí)行)。點(diǎn)、單步執(zhí)行、連續(xù)執(zhí)行)。6.設(shè)置好設(shè)置好MATLAB的工作路徑,以便程序運(yùn)行。的工作路徑,
3、以便程序運(yùn)行。4說(shuō)明說(shuō)明清除命令:清除清除命令:清除workspace中的變量和圖形中的變量和圖形(clear)定義變量:包括全局變量的聲明及參數(shù)值的設(shè)定定義變量:包括全局變量的聲明及參數(shù)值的設(shè)定逐行執(zhí)行命令:指逐行執(zhí)行命令:指MATLAB提供的運(yùn)算指令提供的運(yùn)算指令 或工具箱提供的專用命令或工具箱提供的專用命令控制循環(huán)控制循環(huán) :包含:包含for,if then,switch,while等等語(yǔ)句語(yǔ)句 逐行執(zhí)行命令逐行執(zhí)行命令 end繪圖命令:將運(yùn)算結(jié)果繪制出來(lái)繪圖命令:將運(yùn)算結(jié)果繪制出來(lái)二、二、MATLAB程序的基本組成結(jié)構(gòu)程序的基本組成結(jié)構(gòu)55.1 M文件簡(jiǎn)介文件簡(jiǎn)介 用用MATLAB語(yǔ)言
4、編寫的程序,稱為語(yǔ)言編寫的程序,稱為M文件。文件。MATLAB提供了兩種源程序文件格式:腳本文件和函提供了兩種源程序文件格式:腳本文件和函數(shù)文件,這兩種文件的擴(kuò)展名均為數(shù)文件,這兩種文件的擴(kuò)展名均為“m”。M腳本(腳本(Scripts)文件(命令行文件)文件(命令行文件):沒(méi)有輸入?yún)ⅲ簺](méi)有輸入?yún)?shù),也不返回輸出參數(shù);數(shù),也不返回輸出參數(shù);M函數(shù)(函數(shù)(Functions)文件)文件:既可以有輸入?yún)?shù)、輸:既可以有輸入?yún)?shù)、輸出參數(shù),也可以沒(méi)有輸入?yún)?shù)、輸出參數(shù)。出參數(shù),也可以沒(méi)有輸入?yún)?shù)、輸出參數(shù)。65.1.1 M文件的建立和編輯文件的建立和編輯1.建立新的建立新的M文件文件點(diǎn)擊點(diǎn)擊MATLA
5、B指令窗口工具條上的指令窗口工具條上的New File圖標(biāo);圖標(biāo);從從MATLAB命令窗口的命令窗口的File菜單中選擇菜單中選擇New菜單項(xiàng),菜單項(xiàng),再選擇再選擇M-file命令;命令;在在MATLAB指令窗口運(yùn)行指令指令窗口運(yùn)行指令edit。2.編輯已有的編輯已有的M文件文件點(diǎn)擊點(diǎn)擊MATLAB指令窗口工具條上的指令窗口工具條上的Open File圖標(biāo);圖標(biāo);MATLAB命令窗口的命令窗口的File菜單中選擇菜單中選擇Open命令;命令;在在MATLAB指令窗口中運(yùn)行指令指令窗口中運(yùn)行指令edit mfile.m。注意注意:M文件的存放位置默認(rèn)情況下是文件的存放位置默認(rèn)情況下是MATLAB
6、安裝安裝目錄下的目錄下的work子目錄。子目錄。75.1.2 M腳本文件(命令行文件)腳本文件(命令行文件)將需要運(yùn)行的命令編輯到一個(gè)文件中,然后在將需要運(yùn)行的命令編輯到一個(gè)文件中,然后在MATLAB命令窗口輸入該文件名稱,便會(huì)順序執(zhí)行文命令窗口輸入該文件名稱,便會(huì)順序執(zhí)行文件中的命令,該文件稱為件中的命令,該文件稱為腳本文件腳本文件。腳本文件中的命令格式和前后順序,與在命令窗口腳本文件中的命令格式和前后順序,與在命令窗口中輸入的指令無(wú)區(qū)別;中輸入的指令無(wú)區(qū)別;與在命令窗口中直接運(yùn)行命令一樣,腳本文件產(chǎn)生與在命令窗口中直接運(yùn)行命令一樣,腳本文件產(chǎn)生的變量都駐留在的變量都駐留在MATLAB的的w
7、orkspace中,可以方便中,可以方便查看變量;腳本文件可以直接訪問(wèn)查看變量;腳本文件可以直接訪問(wèn)workspace中的所有中的所有數(shù)據(jù);數(shù)據(jù);文件的文件名要避免與文件的文件名要避免與MATLAB內(nèi)置函數(shù)與工具內(nèi)置函數(shù)與工具箱中的函數(shù)重名,并要放在搜索路徑內(nèi)。箱中的函數(shù)重名,并要放在搜索路徑內(nèi)。8例例:建立一個(gè)腳本文件,將變量:建立一個(gè)腳本文件,將變量a、b的值互換。的值互換。解:建立解:建立example1.m文件文件a=1:9;b=11 12 13;14 15 16;17 18 19;c=a;a=b;b=c;ab指令窗口執(zhí)行該程序指令窗口執(zhí)行該程序 example1a=11 12 13
8、14 15 16 17 18 19b=1 2 3 4 5 6 7 8 995.1.3 M函數(shù)文件函數(shù)文件1.腳本文件和函數(shù)文件的區(qū)別:腳本文件和函數(shù)文件的區(qū)別:M腳本文件不能輸入任何參數(shù),也不返回任何參數(shù),腳本文件不能輸入任何參數(shù),也不返回任何參數(shù),主要是為了解決在命令窗口中反復(fù)輸入命令的繁瑣操主要是為了解決在命令窗口中反復(fù)輸入命令的繁瑣操作;作;M函數(shù)文件通常包含輸入?yún)?shù),也可以返回輸出函數(shù)文件通常包含輸入?yún)?shù),也可以返回輸出參數(shù),主要解決參數(shù)傳遞和函數(shù)調(diào)用的問(wèn)題。參數(shù),主要解決參數(shù)傳遞和函數(shù)調(diào)用的問(wèn)題。腳本文件對(duì)腳本文件對(duì)workspace中的變量進(jìn)行操作;函數(shù)文件中的變量進(jìn)行操作;函數(shù)文
9、件的變量為局域變量,只有其輸出的變量保存在的變量為局域變量,只有其輸出的變量保存在workspace中。中。2.函數(shù)文件格式函數(shù)文件格式function 輸出形參表輸出形參表=函數(shù)名(輸入形參表)函數(shù)名(輸入形參表)函數(shù)幫助信息行函數(shù)幫助信息行函數(shù)體函數(shù)體10函數(shù)文件說(shuō)明函數(shù)文件說(shuō)明:(1)函數(shù)文件通常包括以下幾部分:函數(shù)文件通常包括以下幾部分:函數(shù)的定義行函數(shù)的定義行:定義該函數(shù)的函數(shù)名、輸入變量和輸:定義該函數(shù)的函數(shù)名、輸入變量和輸出變量;出變量;函數(shù)信息行函數(shù)信息行:給出函數(shù)的幫助信息,幫助信息要從:給出函數(shù)的幫助信息,幫助信息要從%開(kāi)頭,并放在一行的開(kāi)頭;開(kāi)頭,并放在一行的開(kāi)頭;函數(shù)體
10、函數(shù)體:函數(shù)的功能實(shí)現(xiàn)部分,是完成函數(shù)文件編寫:函數(shù)的功能實(shí)現(xiàn)部分,是完成函數(shù)文件編寫的主要部分;的主要部分;注釋部分注釋部分:在函數(shù)體中以:在函數(shù)體中以%開(kāi)始直到該行結(jié)束部分,開(kāi)始直到該行結(jié)束部分,表示對(duì)程序的注釋。表示對(duì)程序的注釋。(2)函數(shù)執(zhí)行后,只保留最后的返回結(jié)果,不保留任函數(shù)執(zhí)行后,只保留最后的返回結(jié)果,不保留任何中間過(guò)程,所定義都是局部變量,隨函數(shù)調(diào)用的結(jié)何中間過(guò)程,所定義都是局部變量,隨函數(shù)調(diào)用的結(jié)束而從工作空間消除。束而從工作空間消除。11(3)函數(shù)名的命名規(guī)則與變量名相同,文件名可以與函數(shù)名的命名規(guī)則與變量名相同,文件名可以與函數(shù)名不同,但是調(diào)用時(shí)使用文件名。函數(shù)名不同,但
11、是調(diào)用時(shí)使用文件名。(4)當(dāng)函數(shù)的輸出形參多于當(dāng)函數(shù)的輸出形參多于1個(gè)時(shí),應(yīng)用方括號(hào),參數(shù)個(gè)時(shí),應(yīng)用方括號(hào),參數(shù)之間用逗號(hào)隔開(kāi):之間用逗號(hào)隔開(kāi):function a,b=mfile(x,y);當(dāng)函數(shù)無(wú);當(dāng)函數(shù)無(wú)輸出參數(shù)時(shí),輸出參數(shù)項(xiàng)應(yīng)為空,或者用空的中括號(hào)表輸出參數(shù)時(shí),輸出參數(shù)項(xiàng)應(yīng)為空,或者用空的中括號(hào)表示:示:function mfile(x,y)或者或者function =mfile(x,y)。function example2%這是一個(gè)這是一個(gè)M函數(shù)例子函數(shù)例子a=1:9;b=11 12 13;14 15 16;17 18 19;c=a;%開(kāi)始開(kāi)始a、b兩變量數(shù)值互換兩變量數(shù)值互換a=b
12、;b=c;ab12例:編寫程序文件,將華氏溫度例:編寫程序文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫轉(zhuǎn)換為攝氏溫度度c function c=example3(f)%將華氏溫度轉(zhuǎn)化為攝氏溫度將華氏溫度轉(zhuǎn)化為攝氏溫度c=5*(f-32)/9;example3(100)ans=37.7778135.2 MATLAB程序控制結(jié)構(gòu)程序控制結(jié)構(gòu)5.2.1 條件分支結(jié)構(gòu)條件分支結(jié)構(gòu)1.if語(yǔ)句語(yǔ)句語(yǔ)法:語(yǔ)法:if 表達(dá)式表達(dá)式1 語(yǔ)句段語(yǔ)句段1 elseif 表達(dá)式表達(dá)式2 語(yǔ)句段語(yǔ)句段2 elseif else 語(yǔ)句段語(yǔ)句段n end142.switch語(yǔ)句語(yǔ)句語(yǔ)法語(yǔ)法:switch 分支條件(函數(shù)、變量、表達(dá)式)
13、分支條件(函數(shù)、變量、表達(dá)式)case 條件條件1(標(biāo)量、字符串)(標(biāo)量、字符串)執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句1 case 條件條件2 條件條件3 條件條件4 執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句2 case otherwise 執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句n end15例例:編寫函數(shù)文件,將百分制成績(jī)轉(zhuǎn)換為五級(jí)制的成績(jī):編寫函數(shù)文件,將百分制成績(jī)轉(zhuǎn)換為五級(jí)制的成績(jī)function f=trangrade(x)switch fix(x/10)case 10 9 f=A;case 8 f=B;case 7 f=C;case 6 f=D;otherwise f=E;end運(yùn)行結(jié)果:運(yùn)行結(jié)果:trangrade(97)ans=A trangr
14、ade(67)ans=D trangrade(55)ans=E165.2.2 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)1.while循環(huán)循環(huán) while循環(huán)以不定的次數(shù)重復(fù)執(zhí)行一組語(yǔ)句。語(yǔ)法循環(huán)以不定的次數(shù)重復(fù)執(zhí)行一組語(yǔ)句。語(yǔ)法為:為:while 邏輯表達(dá)式邏輯表達(dá)式 語(yǔ)句語(yǔ)句end while語(yǔ)句執(zhí)行過(guò)程,只要表達(dá)式里面的所有元素語(yǔ)句執(zhí)行過(guò)程,只要表達(dá)式里面的所有元素為真,就執(zhí)行為真,就執(zhí)行while和和end之間的語(yǔ)句,否則就結(jié)束循環(huán)。之間的語(yǔ)句,否則就結(jié)束循環(huán)。在設(shè)計(jì)在設(shè)計(jì)while循環(huán)時(shí),應(yīng)在循環(huán)體內(nèi)有修改循環(huán)時(shí),應(yīng)在循環(huán)體內(nèi)有修改“邏輯表達(dá)邏輯表達(dá)式式”的部分,確保執(zhí)行了一定次數(shù)后可以退出循環(huán)。的部分,確保
15、執(zhí)行了一定次數(shù)后可以退出循環(huán)。17例例:按照下面的表達(dá)式計(jì)算,直至:按照下面的表達(dá)式計(jì)算,直至1/n!小于小于0.001。111111!2!3!en 建立腳本文件建立腳本文件exampl3.merror=0.001;x=1;y=0;n=1;while xerror y=y+x;x=x/n;n=n+1;endy運(yùn)行結(jié)果:運(yùn)行結(jié)果:example3y=2.718118例例:編寫函數(shù)文件求小于自然數(shù):編寫函數(shù)文件求小于自然數(shù)n的婓波納契數(shù)列各項(xiàng)。的婓波納契數(shù)列各項(xiàng)。該數(shù)列是一整數(shù)數(shù)列,其中每個(gè)數(shù)等于前面兩數(shù)之和。該數(shù)列是一整數(shù)數(shù)列,其中每個(gè)數(shù)等于前面兩數(shù)之和。function f=fbnq(n)%計(jì)
16、算婓波納契數(shù)列各項(xiàng)計(jì)算婓波納契數(shù)列各項(xiàng)f=1 1;i=1;while f(i)+f(i+1)fbnq(30)ans=1 1 2 3 5 8 13 21192.for循環(huán)循環(huán) for循環(huán)允許一條或者一組語(yǔ)句被重復(fù)執(zhí)行預(yù)先指循環(huán)允許一條或者一組語(yǔ)句被重復(fù)執(zhí)行預(yù)先指定的次數(shù)。定的次數(shù)。for循環(huán)的語(yǔ)法為:循環(huán)的語(yǔ)法為:for 循環(huán)變量循環(huán)變量=表達(dá)式表達(dá)式1:表達(dá)式:表達(dá)式2:表達(dá)式:表達(dá)式3 循環(huán)體循環(huán)體 end說(shuō)明說(shuō)明:表達(dá)式表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式的值為循環(huán)變量的初值,表達(dá)式2的值為步的值為步長(zhǎng),表達(dá)式長(zhǎng),表達(dá)式3的值為循環(huán)終值,當(dāng)步長(zhǎng)為的值為循環(huán)終值,當(dāng)步長(zhǎng)為1時(shí),可以省略。時(shí),
17、可以省略。表達(dá)式的值可以是正整數(shù)、負(fù)整數(shù)或者小數(shù)。表達(dá)式的值可以是正整數(shù)、負(fù)整數(shù)或者小數(shù)。循環(huán)次數(shù)如何計(jì)算?循環(huán)次數(shù)如何計(jì)算?205.2.3 試探結(jié)構(gòu)試探結(jié)構(gòu) 試探式語(yǔ)句給用戶提供了一種錯(cuò)誤捕獲機(jī)制,可試探式語(yǔ)句給用戶提供了一種錯(cuò)誤捕獲機(jī)制,可以將編譯系統(tǒng)發(fā)現(xiàn)的錯(cuò)誤捕獲,控制對(duì)發(fā)生的錯(cuò)誤進(jìn)以將編譯系統(tǒng)發(fā)現(xiàn)的錯(cuò)誤捕獲,控制對(duì)發(fā)生的錯(cuò)誤進(jìn)行處理。其格式為:行處理。其格式為:try 語(yǔ)句段語(yǔ)句段1 catch 語(yǔ)句段語(yǔ)句段2 end說(shuō)明說(shuō)明:本語(yǔ)句結(jié)構(gòu)首先試探性執(zhí)行語(yǔ)句段本語(yǔ)句結(jié)構(gòu)首先試探性執(zhí)行語(yǔ)句段1,若發(fā)現(xiàn)錯(cuò)誤,若發(fā)現(xiàn)錯(cuò)誤,將錯(cuò)誤信息賦給將錯(cuò)誤信息賦給lasterr變量,并放棄執(zhí)行語(yǔ)句段變量,并
18、放棄執(zhí)行語(yǔ)句段1,轉(zhuǎn),轉(zhuǎn)而執(zhí)行語(yǔ)句段而執(zhí)行語(yǔ)句段2中的語(yǔ)句。中的語(yǔ)句。21例例:編寫矩陣乘法計(jì)算,如有語(yǔ)法錯(cuò)誤,給出錯(cuò)誤信息。:編寫矩陣乘法計(jì)算,如有語(yǔ)法錯(cuò)誤,給出錯(cuò)誤信息。X=magic(4);Y=ones(4,3);tryZ=X*Ycatchfprintf(not conformable.n)endZ=34 34 34 34 34 34 34 34 34 34 34 34 X=magic(4);Y=ones(3);tryZ=X*Ycatchfprintf(not conformable.n)endnot conformable.lasterrans=Error using=mtimesIn
19、ner matrix dimensions must agree.225.2.4 人機(jī)交互命令人機(jī)交互命令1.break命令命令 break使用在循環(huán)語(yǔ)句中,一般通過(guò)使用在循環(huán)語(yǔ)句中,一般通過(guò)if語(yǔ)句來(lái)調(diào)用語(yǔ)句來(lái)調(diào)用break,從而使系統(tǒng)跳出循環(huán)。,從而使系統(tǒng)跳出循環(huán)。%雞兔同籠,頭雞兔同籠,頭36,腿,腿100,問(wèn)有雞兔各幾只,問(wèn)有雞兔各幾只i=1;while 36-i0 if i*2+(36-i)*4=100 break;end i=i+1;endfprintf(The number of chickens is%dn,i);fprintf(The number of rabbits is
20、%dn,36-i);232.continue命令命令 continue使用在循環(huán)語(yǔ)句中,作用是結(jié)束本次循環(huán),使用在循環(huán)語(yǔ)句中,作用是結(jié)束本次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著執(zhí)行下一次即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,接著執(zhí)行下一次循環(huán)。循環(huán)。%請(qǐng)列出請(qǐng)列出110之間的奇數(shù)之間的奇數(shù)for i=1:10 if mod(i,2)=0 continue end fprintf(%4d,i);endfprintf(n);執(zhí)行結(jié)果執(zhí)行結(jié)果 continue_exam 1 3 5 7 9243.input命令命令 提示用戶從鍵盤輸入數(shù)值、字符串和表達(dá)式,并接提示用戶從鍵盤輸入數(shù)值、字符串和表達(dá)
21、式,并接受該輸入。受該輸入。調(diào)用格式:調(diào)用格式:A=input(提示信息,選項(xiàng))(提示信息,選項(xiàng))說(shuō)明說(shuō)明:(1)A=input(statement):在屏幕上顯示):在屏幕上顯示statement,等待用戶輸入,并將數(shù)值賦給,等待用戶輸入,并將數(shù)值賦給A;(2)A=input(statement,s):將輸入作為字):將輸入作為字符串,而不是數(shù)值賦給變量;符串,而不是數(shù)值賦給變量;(3)如果沒(méi)有任何輸入字符,而只按回車鍵,將返回)如果沒(méi)有任何輸入字符,而只按回車鍵,將返回一個(gè)空矩陣。一個(gè)空矩陣。n則表示換行輸出。則表示換行輸出。25例例:計(jì)算一元二次方程:計(jì)算一元二次方程ax2+bx+c=0
22、的根的根a=input(a=?n);b=input(b=?n);c=input(c=?);d=b2-4*a*c;x=(-b+sqrt(d)/(2*a)(-b-sqrt(d)/(2*a)執(zhí)行結(jié)果:執(zhí)行結(jié)果:input_exama=?1b=?2c=?3x=-1.0000+1.4142i -1.0000-1.4142i264.pause命令命令 該命令的作用是暫停程序的執(zhí)行,適用于程序調(diào)試該命令的作用是暫停程序的執(zhí)行,適用于程序調(diào)試時(shí),查看中間結(jié)果的情況。時(shí),查看中間結(jié)果的情況。調(diào)用格式:調(diào)用格式:pause(延遲秒數(shù))(延遲秒數(shù))說(shuō)明:說(shuō)明:(1)pause:使程序運(yùn)行停止,等按任意鍵繼續(xù)運(yùn)行;:
23、使程序運(yùn)行停止,等按任意鍵繼續(xù)運(yùn)行;(2)pause(n):在繼續(xù)執(zhí)行前中止執(zhí)行程序:在繼續(xù)執(zhí)行前中止執(zhí)行程序n秒;秒;(3)pause on:允許后續(xù)的:允許后續(xù)的pause命令中止程序的運(yùn)行;命令中止程序的運(yùn)行;(4)pause off:保證后續(xù)的:保證后續(xù)的pause或或pause(n)命令都不命令都不中止程序的運(yùn)行。中止程序的運(yùn)行。27例例:pause函數(shù)使用說(shuō)明函數(shù)使用說(shuō)明function pause_examt=0:0.05:3*pi;x=sin(t);y=cos(t);plot(t,x);pauseplot(t,y);pause(3);plot(t,x+y);285.disp命令
24、命令 該命令的作用是命令窗口輸出字符串或矩陣。該命令的作用是命令窗口輸出字符串或矩陣。調(diào)用格式:調(diào)用格式:disp(輸出項(xiàng))(輸出項(xiàng))6.keyboard命令命令 在在M文件中請(qǐng)求鍵盤輸入命令,可以通過(guò)輸入文件中請(qǐng)求鍵盤輸入命令,可以通過(guò)輸入return并按回車以終止并按回車以終止keyboard模式。模式。K return7.error語(yǔ)句語(yǔ)句調(diào)用格式:調(diào)用格式:error(message)顯示錯(cuò)誤信息,并將控制權(quán)交給鍵盤,顯示顯示錯(cuò)誤信息,并將控制權(quán)交給鍵盤,顯示message。如果。如果message是空(即是空(即error(),則),則error命令將不起作用。命令將不起作用。29例
25、例:編寫程序求解一元二次方程,如果根為復(fù)數(shù),輸出:編寫程序求解一元二次方程,如果根為復(fù)數(shù),輸出錯(cuò)誤信息,并不輸出計(jì)算結(jié)果。錯(cuò)誤信息,并不輸出計(jì)算結(jié)果。function error_test(a,b,c)%解方程解方程a*x2+b*x+c=0d=b2-4*a*c;if d error_test(1,2,3)?Error using=error_testThe roots are complex!error_test(1,4,3)x=-1 -3308.warning語(yǔ)句語(yǔ)句調(diào)用格式:調(diào)用格式:warning(message)顯示警告信息,它不會(huì)終止程序的運(yùn)行,而僅給出顯示警告信息,它不會(huì)終止程序的
26、運(yùn)行,而僅給出警告信息。警告信息。9.return命令命令 return命令能夠使當(dāng)前函數(shù)正常退出。該語(yǔ)句常用命令能夠使當(dāng)前函數(shù)正常退出。該語(yǔ)句常用于函數(shù)的末尾,以正常結(jié)束函數(shù)的運(yùn)行,也可以用于其于函數(shù)的末尾,以正常結(jié)束函數(shù)的運(yùn)行,也可以用于其他地方,首先對(duì)特定條件判斷,然后根據(jù)需要調(diào)用該命他地方,首先對(duì)特定條件判斷,然后根據(jù)需要調(diào)用該命令使函數(shù)終止運(yùn)行。令使函數(shù)終止運(yùn)行。315.2.5 程序的編寫程序的編寫1編寫編寫M文件的步驟文件的步驟 點(diǎn)擊點(diǎn)擊MATLAB指令窗工具條上的指令窗工具條上的New File圖圖標(biāo)標(biāo) ,就可打開(kāi)如圖就可打開(kāi)如圖5-2所示的所示的MATLAB文件編輯調(diào)試器文件編
27、輯調(diào)試器MATLAB Editor/Debugger。其窗口名為。其窗口名為untitled,用戶即可在空白窗口中編寫程序。用戶即可在空白窗口中編寫程序。32例例5_1.m%zx51.mThis is my first example.clear%清除工作空間中的干擾清除工作空間中的干擾量量y1=2;%設(shè)定恒電壓的幅值設(shè)定恒電壓的幅值for i=1:1:80%設(shè)定循環(huán)的步長(zhǎng)設(shè)定循環(huán)的步長(zhǎng) x(i)=i/(2*pi);%產(chǎn)生一定的正弦波產(chǎn)生一定的正弦波 y(i)=3*sin(x(i);endfigure(1)%圖形一圖形一plot(x,y,r-)title(正弦波正弦波3sinx)xlabel(
28、x);ylabel(y)33 2運(yùn)行文件運(yùn)行文件使使zx51.m所在目錄成為當(dāng)前目錄,或讓該目錄處所在目錄成為當(dāng)前目錄,或讓該目錄處在在MATLAB的搜索路徑上,然后運(yùn)行指令,便可得到的搜索路徑上,然后運(yùn)行指令,便可得到如下圖形。如下圖形。01020304050607080-3-2-10123正 弦 波 3sinxty345.3 函數(shù)類型和參數(shù)函數(shù)類型和參數(shù)5.3.1 函數(shù)的類型函數(shù)的類型1.匿名函數(shù)匿名函數(shù) 匿名函數(shù)不需要匿名函數(shù)不需要M文件,只包含一個(gè)文件,只包含一個(gè)MATLAB表表達(dá)式,任意多個(gè)輸入和一個(gè)輸出,可以在命令窗口、達(dá)式,任意多個(gè)輸入和一個(gè)輸出,可以在命令窗口、M文件中定義,其
29、語(yǔ)法為:文件中定義,其語(yǔ)法為:f=(arglist)expression說(shuō)明說(shuō)明:(1)expression是該函數(shù)的函數(shù)體,是該函數(shù)的函數(shù)體,arglist是輸入?yún)?shù)是輸入?yún)?shù)列表;列表;(2)匿名函數(shù)可以具有多個(gè)輸入?yún)?shù),也可以沒(méi)有輸)匿名函數(shù)可以具有多個(gè)輸入?yún)?shù),也可以沒(méi)有輸入?yún)?shù),但是只能有一個(gè)輸出參數(shù)(入?yún)?shù),但是只能有一個(gè)輸出參數(shù)(ans)。)。35 t=()disp(Good Morning!);t()Good Morning!squ=(x)x2squ=(x)x2 squ(10)ans=100 sumxy=(x,y)2*x+4*y;sumxy(2,4)ans=20362.主函數(shù)和
30、子函數(shù)主函數(shù)和子函數(shù)主函數(shù)和子函數(shù)的區(qū)別:主函數(shù)和子函數(shù)的區(qū)別:MATLAB允許一個(gè)允許一個(gè)M函數(shù)文件包含多個(gè)函數(shù)的代碼,函數(shù)文件包含多個(gè)函數(shù)的代碼,其中第一個(gè)出現(xiàn)的函數(shù)稱為主函數(shù),其余的函數(shù)為子其中第一個(gè)出現(xiàn)的函數(shù)稱為主函數(shù),其余的函數(shù)為子函數(shù)。函數(shù)。保存時(shí)所用的函數(shù)名稱與主函數(shù)定義名相同。保存時(shí)所用的函數(shù)名稱與主函數(shù)定義名相同。主函數(shù)可以在主函數(shù)可以在M文件外部調(diào)用,而子程序不行。文件外部調(diào)用,而子程序不行。同一文件的主函數(shù)和子函數(shù)的工作空間是相互獨(dú)立的。同一文件的主函數(shù)和子函數(shù)的工作空間是相互獨(dú)立的。37例例:編寫一函數(shù),要求輸入任意兩個(gè)數(shù)后,求出這兩:編寫一函數(shù),要求輸入任意兩個(gè)數(shù)后,
31、求出這兩數(shù)之和與絕對(duì)值之和的積。數(shù)之和與絕對(duì)值之和的積。function ch=sub(x,y)%主函數(shù)主函數(shù)ch=sub1(x,y)*sub2(x,y);function ch=sub1(x,y)%子函數(shù)子函數(shù)1ch=x+y;function ch=sub2(x,y)%子函數(shù)子函數(shù)2ch=abs(x)+abs(y);運(yùn)行結(jié)果:運(yùn)行結(jié)果:sub(4,3)ans=49 sub(4,-3)ans=7385.3.2 局部變量和全局變量局部變量和全局變量1.局部變量(局部變量(Local Variables)局部變量是在函數(shù)體內(nèi)部的變量,其影響范圍是本局部變量是在函數(shù)體內(nèi)部的變量,其影響范圍是本函數(shù)內(nèi)
32、部,而且不加載到函數(shù)內(nèi)部,而且不加載到MATLAB的工作空間。局部的工作空間。局部變量只在函數(shù)執(zhí)行期間存在,當(dāng)函數(shù)執(zhí)行完變量就消失。變量只在函數(shù)執(zhí)行期間存在,當(dāng)函數(shù)執(zhí)行完變量就消失。2.全局變量(全局變量(Global Variables)全局變量是可以在不同的函數(shù)工作空間和全局變量是可以在不同的函數(shù)工作空間和MATLAB工作空間中共享使用的變量。在使用前必須工作空間中共享使用的變量。在使用前必須用用global定義,而且在任何使用該變量的函數(shù)中都要加定義,而且在任何使用該變量的函數(shù)中都要加以定義,即使在命令窗口中也不加以例外。以定義,即使在命令窗口中也不加以例外。39function f=g
33、lobal_exam(x,y)%define 2 global variablesglobal A Bf=A*x+B*y;在命令窗口中輸入在命令窗口中輸入 global A B A=1;B=2;f=global_exam(2,3)f=8405.3.3 函數(shù)的參數(shù)函數(shù)的參數(shù)1.函數(shù)的調(diào)用函數(shù)的調(diào)用函數(shù)的調(diào)用方式:函數(shù)的調(diào)用方式:輸出實(shí)參表輸出實(shí)參表=函數(shù)名(輸入實(shí)參表)函數(shù)名(輸入實(shí)參表)2.函數(shù)參數(shù)的個(gè)數(shù)函數(shù)參數(shù)的個(gè)數(shù)nagin:該函數(shù)輸入實(shí)參的個(gè)數(shù):該函數(shù)輸入實(shí)參的個(gè)數(shù)nargout:該函數(shù)輸出實(shí)參的個(gè)數(shù):該函數(shù)輸出實(shí)參的個(gè)數(shù)nargin在函數(shù)體內(nèi)獲得實(shí)際輸入變量個(gè)數(shù)在函數(shù)體內(nèi)獲得實(shí)際輸入變
34、量個(gè)數(shù)nargout在函數(shù)體內(nèi)獲得實(shí)際輸出變量個(gè)數(shù)在函數(shù)體內(nèi)獲得實(shí)際輸出變量個(gè)數(shù)nargin(fun)在函數(shù)體外獲取定義的輸入?yún)?shù)個(gè)數(shù)在函數(shù)體外獲取定義的輸入?yún)?shù)個(gè)數(shù)nargout(fun)在函數(shù)體外獲取定義的輸出參數(shù)個(gè)數(shù)在函數(shù)體外獲取定義的輸出參數(shù)個(gè)數(shù)41例例:編程實(shí)現(xiàn),若只輸入一個(gè)變量,系統(tǒng)提示輸入錯(cuò)誤,:編程實(shí)現(xiàn),若只輸入一個(gè)變量,系統(tǒng)提示輸入錯(cuò)誤,若輸入兩個(gè)、三個(gè)變量,則將各變量相加,將和輸出。若輸入兩個(gè)、三個(gè)變量,則將各變量相加,將和輸出。function f=nargintest(a,b,c)if nargin nargintest(1)?Error using=nargintestNot enough input arguments nargintest(1,2)ans=3 nargintest(1,2,3)ans=6 nargintest(1,2,3,4)?Error using=nargintestToo many input arguments.
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第7課時(shí)圖形的位置練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)2圖形與幾何第1課時(shí)圖形的認(rèn)識(shí)與測(cè)量1平面圖形的認(rèn)識(shí)練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)1數(shù)與代數(shù)第10課時(shí)比和比例2作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)4比例1比例的意義和基本性質(zhì)第3課時(shí)解比例練習(xí)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第7課時(shí)圓柱的體積3作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)3圓柱與圓錐1圓柱第1節(jié)圓柱的認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)2百分?jǐn)?shù)(二)第1節(jié)折扣和成數(shù)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)1負(fù)數(shù)第1課時(shí)負(fù)數(shù)的初步認(rèn)識(shí)作業(yè)課件新人教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)考前模擬期末模擬訓(xùn)練二作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)期末豐收?qǐng)@作業(yè)課件蘇教版
- 2023年六年級(jí)數(shù)學(xué)上冊(cè)易錯(cuò)清單十二課件新人教版
- 標(biāo)準(zhǔn)工時(shí)講義
- 2021年一年級(jí)語(yǔ)文上冊(cè)第六單元知識(shí)要點(diǎn)習(xí)題課件新人教版
- 2022春一年級(jí)語(yǔ)文下冊(cè)課文5識(shí)字測(cè)評(píng)習(xí)題課件新人教版
- 2023年六年級(jí)數(shù)學(xué)下冊(cè)6整理和復(fù)習(xí)4數(shù)學(xué)思考第1課時(shí)數(shù)學(xué)思考1練習(xí)課件新人教版