版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Hefei University of TechnologyInstitute of Sound and Vibration ResearchMATLAB 函數(shù)文件和程序調(diào)試函數(shù)文件和程序調(diào)試2MM文本文件介紹文本文件介紹 MATLAB編寫的程序編寫的程序文件文件稱為稱為M文件,文件,M文件有腳本文件和函數(shù)文件兩種。文件有腳本文件和函數(shù)文件兩種。 腳本文件(腳本文件( M-script )不需要輸入?yún)?shù),也不輸出參數(shù),按照文件中制定的順序執(zhí)行命令)不需要輸入?yún)?shù),也不輸出參數(shù),按照文件中制定的順序執(zhí)行命令序列。序列。腳本文件適合于小規(guī)模運(yùn)算。腳本文件適合于小規(guī)模運(yùn)算。 函數(shù)文件接受其他數(shù)據(jù)為輸
2、入?yún)?shù),并且可以返回?cái)?shù)據(jù)。函數(shù)函數(shù)文件接受其他數(shù)據(jù)為輸入?yún)?shù),并且可以返回?cái)?shù)據(jù)。函數(shù)是是MATLAB編程的主流方法。編程的主流方法。3腳本腳本MM文件介紹文件介紹 腳本腳本M文件通常僅僅由文件通常僅僅由M文件正文和注釋部分構(gòu)成。正文主要是實(shí)現(xiàn)功能,注釋則是給出代文件正文和注釋部分構(gòu)成。正文主要是實(shí)現(xiàn)功能,注釋則是給出代碼說明。碼說明。例:例: g=0: 0.5: 20; %產(chǎn)生產(chǎn)生 一維向量一維向量 x=sin(g); % 計(jì)算正弦值計(jì)算正弦值 y=cos(g); % 計(jì)算余弦值計(jì)算余弦值 z=x; y; 保存腳本文件時按照保存腳本文件時按照MATLAB標(biāo)識符的要求起文件名標(biāo)識符的要求起文件名
3、 腳本文件的運(yùn)行有兩種方式:腳本文件的運(yùn)行有兩種方式:1. 在命令窗口中鍵入文件名;在命令窗口中鍵入文件名; 2. 在在M文件編輯窗口點(diǎn)擊文件編輯窗口點(diǎn)擊Debug菜單菜單的的Run,或者使用快捷鍵,或者使用快捷鍵F5。4函數(shù)函數(shù)MM文件介紹文件介紹 函數(shù)函數(shù)M文件由文件由function語句引導(dǎo),格式為:語句引導(dǎo),格式為: function 輸出形參列表輸出形參列表= 函數(shù)名(輸入形參列表)函數(shù)名(輸入形參列表) %注釋說明部分(可選)注釋說明部分(可選) 函數(shù)體語句函數(shù)體語句 (必須)(必須)注意:注意: 第一行為引導(dǎo)行,表示該第一行為引導(dǎo)行,表示該M文件是函數(shù)文件文件是函數(shù)文件 函數(shù)名的
4、命名規(guī)則與變量名相同函數(shù)名的命名規(guī)則與變量名相同( 必須以字母開頭必須以字母開頭) 當(dāng)輸出形參多于一個時,用方括號括起來當(dāng)輸出形參多于一個時,用方括號括起來1. 函數(shù)必須是一個單獨(dú)的函數(shù)必須是一個單獨(dú)的M文件文件, 函數(shù)文件名建議與函數(shù)名一致,通常為函數(shù)名函數(shù)文件名建議與函數(shù)名一致,通常為函數(shù)名.m,不一致時以文件不一致時以文件名為準(zhǔn)。名為準(zhǔn)。5函數(shù)函數(shù)MM文件介紹文件介紹形參形參 全稱為全稱為“形式參數(shù)形式參數(shù)” 由于它不是實(shí)際存在變量,所以又稱虛擬變量。形參是在定義函數(shù)的時候使用由于它不是實(shí)際存在變量,所以又稱虛擬變量。形參是在定義函數(shù)的時候使用的參數(shù)的參數(shù), ,目的是用來接收調(diào)用該函數(shù)時
5、傳入的參數(shù)。目的是用來接收調(diào)用該函數(shù)時傳入的參數(shù)。 形參也可以理解為函數(shù)的自變量,其初值來源于函數(shù)的調(diào)用。只有在程序執(zhí)行過程中調(diào)用了函數(shù),形參也可以理解為函數(shù)的自變量,其初值來源于函數(shù)的調(diào)用。只有在程序執(zhí)行過程中調(diào)用了函數(shù),形參才有可能得到具體的值,并參與運(yùn)算求得函數(shù)值。形參才有可能得到具體的值,并參與運(yùn)算求得函數(shù)值。 形參在整個函數(shù)體內(nèi)都可以使用,形參在整個函數(shù)體內(nèi)都可以使用, 離開該函數(shù)則不能使用。離開該函數(shù)則不能使用。6函數(shù)函數(shù)MM文件介紹文件介紹%注釋說明部分(可選)注釋說明部分(可選) 第一注釋行為大寫的函數(shù)文件名和函數(shù)功能簡要描述,供第一注釋行為大寫的函數(shù)文件名和函數(shù)功能簡要描述,
6、供lookfor和和help使用使用 第一注釋行之后為函數(shù)輸入第一注釋行之后為函數(shù)輸入/輸出參數(shù)的含義及調(diào)用格式說明等信息,構(gòu)成全部在線幫助文本輸出參數(shù)的含義及調(diào)用格式說明等信息,構(gòu)成全部在線幫助文本 在線幫助文本后空一行在線幫助文本后空一行 空一行之后的注釋行,包括文件編寫和修改的信息,用于軟件檔案管理空一行之后的注釋行,包括文件編寫和修改的信息,用于軟件檔案管理7函數(shù)函數(shù)MM文件舉例文件舉例 編寫函數(shù)文件計(jì)算圓柱體的表面積和體積編寫函數(shù)文件計(jì)算圓柱體的表面積和體積function s, v=colume (r, h) s=2*r*pi*h + 2*pi*r2; % calculate th
7、e surface area v=pi*r2*h; % calculate the volume注意:注意:當(dāng)函數(shù)具有多個輸出變量時,則以方括號括起當(dāng)函數(shù)具有多個輸出變量時,則以方括號括起當(dāng)函數(shù)不含輸出變量時,則直接略去輸出部分或采用空方括號表示。當(dāng)函數(shù)不含輸出變量時,則直接略去輸出部分或采用空方括號表示。% r is the radius of the colume% h is the height of the colume 注釋注釋8函數(shù)的調(diào)用函數(shù)的調(diào)用 函數(shù)文件不能直接運(yùn)行,要以函數(shù)調(diào)用的方式來調(diào)用,調(diào)用一般格式:函數(shù)文件不能直接運(yùn)行,要以函數(shù)調(diào)用的方式來調(diào)用,調(diào)用一般格式: 實(shí)參必須
8、有確定的值。實(shí)參必須有確定的值。 函數(shù)調(diào)用時,先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。函數(shù)調(diào)用時,先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。 函數(shù)調(diào)用時,實(shí)參的順序和個數(shù)應(yīng)與函數(shù)定義時的形參的順序和個數(shù)一致。函數(shù)調(diào)用時,實(shí)參的順序和個數(shù)應(yīng)與函數(shù)定義時的形參的順序和個數(shù)一致。 函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。傳送給實(shí)參。 輸出實(shí)參列表輸出實(shí)參列表 = 函數(shù)名函數(shù)名(輸入實(shí)參列表輸入實(shí)參列表)9函數(shù)的調(diào)
9、用函數(shù)的調(diào)用 例:例: s, v=colume (1, 1); 或者或者 r=1; h=1; s, v=colume (r, h);10函數(shù)變量函數(shù)變量 工作區(qū)工作區(qū) MATLAB將每個變量保存在一塊內(nèi)存空間中,這個空間稱為工作區(qū)。主工作區(qū)包括所有通過命令將每個變量保存在一塊內(nèi)存空間中,這個空間稱為工作區(qū)。主工作區(qū)包括所有通過命令窗口創(chuàng)建的變量和腳本文件運(yùn)行生成的變量。腳本文件沒有獨(dú)立的工作區(qū),而每個函數(shù)都擁有獨(dú)立窗口創(chuàng)建的變量和腳本文件運(yùn)行生成的變量。腳本文件沒有獨(dú)立的工作區(qū),而每個函數(shù)都擁有獨(dú)立的工作區(qū),將該函數(shù)的所有變量都保存在該獨(dú)立的工作區(qū)中。的工作區(qū),將該函數(shù)的所有變量都保存在該獨(dú)立
10、的工作區(qū)中。 根據(jù)變量的作用工作區(qū),函數(shù)變量主要分為以下兩種:根據(jù)變量的作用工作區(qū),函數(shù)變量主要分為以下兩種: 局部變量局部變量 全局變量全局變量11函數(shù)變量函數(shù)變量局部變量局部變量局部變量:局部變量: 每個函數(shù)都有自己的局部變量,這些變量存儲在該函數(shù)獨(dú)立的工作區(qū)中,與其他函數(shù)的變量及主每個函數(shù)都有自己的局部變量,這些變量存儲在該函數(shù)獨(dú)立的工作區(qū)中,與其他函數(shù)的變量及主工作區(qū)中的變量分開存儲。當(dāng)函數(shù)調(diào)用結(jié)束時,這些變量隨之刪除,不保存在內(nèi)存中。并且,除了工作區(qū)中的變量分開存儲。當(dāng)函數(shù)調(diào)用結(jié)束時,這些變量隨之刪除,不保存在內(nèi)存中。并且,除了函數(shù)返回值,該函數(shù)不改變工作區(qū)中其他變量的值。函數(shù)返回值
11、,該函數(shù)不改變工作區(qū)中其他變量的值。 腳本文件沒有獨(dú)立的工作區(qū),當(dāng)通過命令窗口調(diào)用腳本文件時,腳本文件分享主工作區(qū),當(dāng)函數(shù)腳本文件沒有獨(dú)立的工作區(qū),當(dāng)通過命令窗口調(diào)用腳本文件時,腳本文件分享主工作區(qū),當(dāng)函數(shù)調(diào)用腳本文件時,腳本文件分享主調(diào)函數(shù)的工作區(qū)。需要注意的是,如果腳本中改變了工作區(qū)中變調(diào)用腳本文件時,腳本文件分享主調(diào)函數(shù)的工作區(qū)。需要注意的是,如果腳本中改變了工作區(qū)中變量的值,則在腳本文件調(diào)用結(jié)束后,該變量的值發(fā)生改變。量的值,則在腳本文件調(diào)用結(jié)束后,該變量的值發(fā)生改變。 在函數(shù)中,變量默認(rèn)為局部變量。在函數(shù)中,變量默認(rèn)為局部變量。12函數(shù)變量函數(shù)變量全局變量全局變量全局變量全局變量局部
12、變量只在一個工作區(qū)內(nèi)有效,無論是函數(shù)工作區(qū)還是局部變量只在一個工作區(qū)內(nèi)有效,無論是函數(shù)工作區(qū)還是 MATLAB 主工作區(qū)。與局部變量不同,主工作區(qū)。與局部變量不同,全局變量可以在定義該變量在全部工作區(qū)中有效。當(dāng)在一個工作區(qū)內(nèi)改變該變量的值時,該變量全局變量可以在定義該變量在全部工作區(qū)中有效。當(dāng)在一個工作區(qū)內(nèi)改變該變量的值時,該變量在其他工作區(qū)中的變量同時改變。在其他工作區(qū)中的變量同時改變。 任何函數(shù)如果需要使用全局變量,則必須首先聲明,聲明格式為:任何函數(shù)如果需要使用全局變量,則必須首先聲明,聲明格式為:global 變量名變量名1 變量名變量名2 變量名列表中的各個變量用空格隔開,不能用逗號
13、!變量名列表中的各個變量用空格隔開,不能用逗號!13函數(shù)變量函數(shù)變量全局變量全局變量 定義全局變量是定義全局變量是M文件間傳遞信息的一種手段。文件間傳遞信息的一種手段。 全局變量給函數(shù)間的數(shù)據(jù)傳遞帶來了方便,但卻破壞了函數(shù)對變量的封裝,降低了程序的可讀性,全局變量給函數(shù)間的數(shù)據(jù)傳遞帶來了方便,但卻破壞了函數(shù)對變量的封裝,降低了程序的可讀性,因而在結(jié)構(gòu)化程序設(shè)計(jì)中,全局變量是不受歡迎的。特別是當(dāng)程序較大,子程序較多時,全局變量因而在結(jié)構(gòu)化程序設(shè)計(jì)中,全局變量是不受歡迎的。特別是當(dāng)程序較大,子程序較多時,全局變量將個程序調(diào)試和維護(hù)帶來不便,故不提倡使用全局變量。將個程序調(diào)試和維護(hù)帶來不便,故不提倡
14、使用全局變量。14函數(shù)類型函數(shù)類型 主函數(shù)主函數(shù) 子函數(shù)子函數(shù) 嵌套函數(shù)嵌套函數(shù)15函數(shù)類型函數(shù)類型主函數(shù)主函數(shù) 通常每個通常每個 M 文件中的第一個函數(shù)為主函數(shù),主函數(shù)可以被該文件之外的其他函數(shù)調(diào)用,而子函文件中的第一個函數(shù)為主函數(shù),主函數(shù)可以被該文件之外的其他函數(shù)調(diào)用,而子函數(shù)只能被該文件內(nèi)的函數(shù)調(diào)用。主函數(shù)的調(diào)用通過存儲該函數(shù)的數(shù)只能被該文件內(nèi)的函數(shù)調(diào)用。主函數(shù)的調(diào)用通過存儲該函數(shù)的 M 文件的文件名調(diào)用。文件的文件名調(diào)用。16函數(shù)類型函數(shù)類型子函數(shù)子函數(shù) 一個一個 M 文件中可以包括多個函數(shù),除主函數(shù)之外的其他函數(shù)稱為子函數(shù)。子函數(shù)只能被主函數(shù)或文件中可以包括多個函數(shù),除主函數(shù)之外的其
15、他函數(shù)稱為子函數(shù)。子函數(shù)只能被主函數(shù)或該文件內(nèi)的其他子函數(shù)調(diào)用。每個子函數(shù)以函數(shù)定義語句開頭,直至下一個函數(shù)的定義或文件的結(jié)該文件內(nèi)的其他子函數(shù)調(diào)用。每個子函數(shù)以函數(shù)定義語句開頭,直至下一個函數(shù)的定義或文件的結(jié)尾。尾。 17函數(shù)類型函數(shù)類型嵌套函數(shù)嵌套函數(shù) 一個函數(shù)內(nèi)部可以定義其他的函數(shù),這種內(nèi)部的函數(shù)稱作嵌套函數(shù)。一個函數(shù)內(nèi)部可以定義其他的函數(shù),這種內(nèi)部的函數(shù)稱作嵌套函數(shù)。 定義嵌套函數(shù)時,只要在一個函數(shù)內(nèi)部直接定義即可。需要注意的是當(dāng)一個定義嵌套函數(shù)時,只要在一個函數(shù)內(nèi)部直接定義即可。需要注意的是當(dāng)一個 M文件中存在嵌套函文件中存在嵌套函數(shù)時,該文件內(nèi)的所有函數(shù)必須以數(shù)時,該文件內(nèi)的所有函
16、數(shù)必須以 end 結(jié)尾。結(jié)尾。 例例 嵌套函數(shù)的結(jié)構(gòu)嵌套函數(shù)的結(jié)構(gòu)function x = A(p1, p2). function y = B(p3) . end.end18函數(shù)類型函數(shù)類型嵌套函數(shù)嵌套函數(shù) 每個函數(shù)中可以嵌套多個函數(shù)。每個函數(shù)中可以嵌套多個函數(shù)。 多個平行嵌套函數(shù)多個平行嵌套函數(shù)function x = A(p1, p2). function y = B(p3) . end function z = C(p4) . end.end19函數(shù)類型函數(shù)類型嵌套函數(shù)嵌套函數(shù) 多層嵌套函數(shù)多層嵌套函數(shù)function x = A(p1, p2). function y = B(p3)
17、. function z = C(p4) . end . end.end 在這段程序中,函數(shù)在這段程序中,函數(shù) A 嵌套了函數(shù)嵌套了函數(shù) B,函數(shù),函數(shù) B 嵌套了函數(shù)嵌套了函數(shù) C。20函數(shù)類型函數(shù)類型嵌套函數(shù)的調(diào)用嵌套函數(shù)的調(diào)用 一個嵌套函數(shù)可以被下列函數(shù)調(diào)用:一個嵌套函數(shù)可以被下列函數(shù)調(diào)用:(1)該嵌套函數(shù)的上一層函數(shù);)該嵌套函數(shù)的上一層函數(shù);(2)同一母函數(shù)下的同級嵌套函數(shù);)同一母函數(shù)下的同級嵌套函數(shù);(3)被任一低級別的函數(shù)調(diào)用。)被任一低級別的函數(shù)調(diào)用。21函數(shù)句柄函數(shù)句柄利用函數(shù)句柄可以實(shí)現(xiàn)對函數(shù)的間接操作,可以通過將函數(shù)句柄傳遞給其他函數(shù)實(shí)現(xiàn)對函數(shù)的操利用函數(shù)句柄可以實(shí)現(xiàn)對
18、函數(shù)的間接操作,可以通過將函數(shù)句柄傳遞給其他函數(shù)實(shí)現(xiàn)對函數(shù)的操作,也可以將函數(shù)句柄保存在變量中,留待以后調(diào)用操作。作,也可以將函數(shù)句柄保存在變量中,留待以后調(diào)用操作。函數(shù)句柄是通過函數(shù)句柄是通過 符號創(chuàng)建的,格式為:符號創(chuàng)建的,格式為:fhandle = functionname。例:例:求解方程求解方程ex-x=0 function fx=equation (x)fx=exp(x)-3*x; fzero(equation, 1) ; fminbnd(equation, 0,1) ; 22程序的調(diào)試程序的調(diào)試應(yīng)用程序的錯誤有兩類應(yīng)用程序的錯誤有兩類 語法錯誤語法錯誤 包括詞法或文法的錯誤,例如
19、函數(shù)名的拼寫錯誤、表達(dá)式書寫錯誤等。包括詞法或文法的錯誤,例如函數(shù)名的拼寫錯誤、表達(dá)式書寫錯誤等。 MATLAB能檢測出大多數(shù)該類錯誤,給出錯誤信息,并指出出錯的位置。能檢測出大多數(shù)該類錯誤,給出錯誤信息,并指出出錯的位置。 運(yùn)行時的錯誤運(yùn)行時的錯誤 程序的運(yùn)行結(jié)果有錯誤,這類錯誤也稱為程序邏輯錯誤。程序的運(yùn)行結(jié)果有錯誤,這類錯誤也稱為程序邏輯錯誤。 MATLAB系統(tǒng)對程序邏輯錯誤無能為力系統(tǒng)對程序邏輯錯誤無能為力23程序的調(diào)試程序的調(diào)試對于邏輯錯誤,可采用調(diào)試手段來發(fā)現(xiàn)對于邏輯錯誤,可采用調(diào)試手段來發(fā)現(xiàn)將程序執(zhí)行的中間結(jié)果輸出到命令窗口,以方便檢查;將程序執(zhí)行的中間結(jié)果輸出到命令窗口,以方便檢查; 去掉分號去掉分
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度車輛租賃與保險理賠服務(wù)協(xié)議8篇
- 2025年單級臥式離心泵行業(yè)深度研究分析報告
- 2025年度民宿家具安裝與民宿體驗(yàn)提升服務(wù)協(xié)議4篇
- 2025年度新型城鎮(zhèn)化項(xiàng)目場地平整工程合同3篇
- 2025年中國頭孢吡隆行業(yè)市場深度分析及投資策略咨詢報告
- 二零二五年度藝術(shù)品收藏代理服務(wù)合同樣本4篇
- 2025年私人教練勞動合同范本(含績效考核與晉升)3篇
- 2025年度高新技術(shù)企業(yè)期權(quán)激勵協(xié)議3篇
- 2025年生物科技產(chǎn)品采購合同范本模板4篇
- 二零二五年度打井安全教育與培訓(xùn)體系建設(shè)協(xié)議書范本4篇
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專題培訓(xùn)課件
- 二手車車主寄售協(xié)議書范文范本
- 窗簾采購?fù)稑?biāo)方案(技術(shù)方案)
- 基于學(xué)習(xí)任務(wù)群的小學(xué)語文單元整體教學(xué)設(shè)計(jì)策略的探究
- 人教版高中物理必修一同步課時作業(yè)(全冊)
- 食堂油鍋起火演練方案及流程
- 《呼吸衰竭的治療》
- 2024年度醫(yī)患溝通課件
- 2024年中考政治總復(fù)習(xí)初中道德與法治知識點(diǎn)總結(jié)(重點(diǎn)標(biāo)記版)
- 2024年手術(shù)室的應(yīng)急預(yù)案
評論
0/150
提交評論