




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第05講 MATLAB程序設(shè)計(jì)數(shù)據(jù)和函數(shù)的可視化主要內(nèi)容1、M文件2、matlab控制流3、matlab程序調(diào)試5.1 M文件 1、MATLAB的M文件有兩種(腳本文件和函數(shù)文件)腳本文件:將原來(lái)要在MATLAB環(huán)境直接輸入的語(yǔ)句, 放在一個(gè)以.m為后綴的文件中。函數(shù)文件:它的第一行必須是函數(shù)定義行, 用來(lái)標(biāo)示其與腳本文件的不同, 也存在.m文件中。 5.1 M文件腳本文件的特點(diǎn):1.)它是一串按用戶意圖排列而成的(包括控制流 向指令在內(nèi)的)MATLAB指令集合。2.) 腳本文件運(yùn)行后,所產(chǎn)生的所有變量都駐留在 MATLAB基本空間(workspace)中。只要用戶 不使用clear指令加以
2、清除,且MATLAB指令窗不 關(guān)閉,就可非常方便地從工作區(qū)中查詢當(dāng)前某個(gè)變 量的計(jì)算情況。 5.1 M文件函數(shù)文件的構(gòu)成(由5個(gè)部分組成)(1)函數(shù)定義行(腳本文件無(wú)需定義行) 位于函數(shù)文件的首行,以MATLAB關(guān)鍵字function開頭,函數(shù)名以及函數(shù)的輸入輸出變量都在這一行定義。 function f,g=fname(x,y);(2)函數(shù)信息說(shuō)明行(H1) 緊隨函數(shù)定義行之后的以%開頭的注釋行的第一行。H1行包括:大寫體的函數(shù)文件名; 運(yùn)用關(guān)鍵詞簡(jiǎn)要描述的函數(shù)功能。H1行作用: 供help幫助使用(3)函數(shù)幫助文本 H1行及其之后的連續(xù)以%開頭的所有注釋行構(gòu)成整個(gè)在線 幫助文本。 通常包括
3、:函數(shù)輸入輸出變量含義 函數(shù)調(diào)用格式的說(shuō)明 5.1 M文件(4)函數(shù)體 是指完成指定功能的MATLAB指令集合,它接收輸入變量,進(jìn)行程序流控制,得到輸出變量??烧{(diào)用任何可用的MATLAB提供的函數(shù)和用戶自己定義的函數(shù)。(5)注釋 是指在函數(shù)體中對(duì)某些程序行所進(jìn)行的注釋。以%標(biāo)注,可以出現(xiàn)在函數(shù)體的任何需要的地方。舉例演示注釋行function b= mean(a)%MEAN Average or mean value. %For vectors, MEAN(a) is the mean value of a%For matrix, MEAN(a) is the row vector%conta
4、ining the mean value of each columnm,n=size(a) ; %The dimension of matrics aif m=1 m=n; end b= sum(a)/m; 函數(shù)定義行H1行幫助行函數(shù)體m,n=size(a) ; %The dimension of matrics Xif m=1 m=n; end b= sum(a)/m 腳本文件腳本文件和函數(shù)文件的比較5.1 M文件2、 函數(shù)工作空間每當(dāng)函數(shù)文件運(yùn)行時(shí),matlab會(huì)為它開辟一個(gè)臨時(shí)工作空間稱之為函數(shù)工作空間。說(shuō)明:1、函數(shù)工作空間相對(duì)于基本工作空間是獨(dú)立的、臨時(shí)的2、函數(shù)工作空間隨具體函數(shù)
5、文件的調(diào)用而產(chǎn)生,隨調(diào)用結(jié)束而刪除3、函數(shù)運(yùn)行時(shí)產(chǎn)生的所有中間變量都存放在函數(shù)工作空間中4、函數(shù)執(zhí)行完成后,臨時(shí)函數(shù)空間及所有的中間變量即被清除 5.1 M文件3、 函數(shù)的輸入、輸出變量相同點(diǎn): MATLAB中,函數(shù)的輸入、輸出變量的含義與C語(yǔ)言的函數(shù)相同。異同點(diǎn): 實(shí)際調(diào)用時(shí),所用的輸入、輸出變量的個(gè)數(shù)可以少于原定義函數(shù)的變量的個(gè)數(shù)。5.1 M文件4、 局部變量和全局變量局部變量: 是存在于函數(shù)工作空間內(nèi)部的中間變量,產(chǎn)生于函數(shù)的運(yùn)行過(guò)程中,影響范圍僅限于該函數(shù)本身。全局變量: 通過(guò)globle指令定義的變量,可以同時(shí)由幾個(gè)不同的函數(shù)工作空間以及基本工作空間共享。 全局變量應(yīng)用示例.func
6、tion f=wadd(x,y)globle alpha betaf=alpha*x+beta*y;global alpha betaalpha=1;beta=2;s=wadd(1,2)在命令窗口中輸入: 5.1 M文件5、 主函數(shù)和子函數(shù)說(shuō)明: 1、與c語(yǔ)言相似,matlab中也可以定義子函數(shù), 來(lái)擴(kuò)充函數(shù)的功能2、子函數(shù)只能被主函數(shù)或同一主函數(shù)下的其它子函數(shù)所調(diào)用定義: 在函數(shù)文件中題頭定義的函數(shù)被稱為 主函數(shù) 函數(shù)體內(nèi)定義的其它函數(shù)均被視為 子函數(shù)function c=testarg(a,b)c=test1(a,b)*test2(a,b);function c=test1(a,b) c=
7、a+b;function c=test2(a,b) c=a-b;%主函數(shù)%子函數(shù)1%子函數(shù)2 5.2 matlab控制流matlab提供了五種控制程序流的結(jié)構(gòu): for 循環(huán)結(jié)構(gòu) while 循環(huán)結(jié)構(gòu) if-else-end分支結(jié)構(gòu) switch-case 結(jié)構(gòu) try-catch 結(jié)構(gòu)條件控制語(yǔ)句 5.2 matlab控制流1.if-else-end分支結(jié)構(gòu),條件控制語(yǔ)句。 (1)單分支 if expression commands end 如果表達(dá)式expression為真,執(zhí)行組命令commands,否則跳過(guò)該組命令。例: 假設(shè)定義mn的矩陣A。下面的語(yǔ)句是判斷 矩陣A的第1列元素是否為
8、0,若全為0,則從 矩陣A中刪除第1列。 if A(:,1)=0 m,n=size(A); A=A(1:m,2:n);end 5.2 matlab控制流(2)雙分支if expression 判決條件 commands1 表達(dá)式為真時(shí),執(zhí)行命令commands1else commands2 表達(dá)式為假時(shí),執(zhí)行命令commands2end5.2 matlab控制流判決表達(dá)式2(3)多分支 if expression1 commands1 elseif expression2 commands2 else commandsk end判決表達(dá)式1表達(dá)式1為真,執(zhí)行commands1,結(jié)束此結(jié)構(gòu)表達(dá)式
9、1為假,而表達(dá)2為真, 執(zhí)行commands2,結(jié)束此結(jié)構(gòu)當(dāng)前面所有表達(dá)式均為假時(shí),執(zhí)行該組命令說(shuō)明:表達(dá)式為空時(shí),MATLAB認(rèn)為表達(dá)式為假。例:if n0 disp(input n must be positive.) elseif n=0 disp(n=0) elseif rem(n,2)=0 disp(n是2的整數(shù)倍) else disp(其它情況) end 5.2 matlab控制流2.switch-case結(jié)構(gòu),條件控制語(yǔ)句switch ex case test1 commands1 case test2 commands2 case testk commandsk otherwi
10、se commandsend ex為一標(biāo)量或字符串當(dāng)ex等于test1時(shí),執(zhí)行組命令1,然后跳出該結(jié)構(gòu)當(dāng)ex等于testk時(shí),執(zhí)行組命令k,然后跳出該結(jié)構(gòu)當(dāng)表達(dá)式不等于前面所有的檢測(cè)值時(shí),則執(zhí)行該組命令檢測(cè)擲一次骰子所得的點(diǎn)數(shù)是單數(shù)還是雙數(shù)function dicetest(result)switch result case 1,3,5 disp(odd number of eye) case 2,4,6 disp(even number of eye) otherwise disp(what kind of dice do you have?)end 說(shuō)明:case后的檢測(cè)值可以是標(biāo)量、字符
11、串和元胞數(shù)組 若檢測(cè)值是元胞數(shù)組,matlab將表達(dá)式的值和元胞數(shù)組 中的所有值進(jìn)行比較,只要元胞數(shù)組中有一個(gè)元素與表 達(dá)式的值相等,則認(rèn)為比較結(jié)果為真。 5.2 matlab控制流3. try-catch 結(jié)構(gòu),條件控制語(yǔ)句try commands1catch commands2end執(zhí)行commands1,若正確,則跳出此結(jié)構(gòu)若執(zhí)行commands1時(shí)出現(xiàn)錯(cuò)誤,則執(zhí)行commands2N=4;A=rand(3);try A_N=A(N,:) catch A_end=A(end,:) endlasterr顯示最新出錯(cuò)信息,并終止程序%如果取A(N,:)出錯(cuò),則改取A的最后一行5.2 matl
12、ab控制流4.指定重復(fù)次數(shù)的循環(huán)語(yǔ)句for variable=expression statementsend說(shuō)明:在for和variable之間需要有一個(gè)空格。這里的variable 是循環(huán)變量名。在表達(dá)式中給出循環(huán)的初始值、步長(zhǎng)和終值。功能:這個(gè)命令就是反復(fù)執(zhí)行一條語(yǔ)句或一組語(yǔ)句,而執(zhí)行的次數(shù)已預(yù)先定義好。以end結(jié)束這組語(yǔ)句 5.2 matlab控制流5.不指定重復(fù)次數(shù)的循環(huán)語(yǔ)句 說(shuō)明: 無(wú)論是for循環(huán)還是while循環(huán)均可用break語(yǔ)句終止循環(huán)。while expression commandsend功能:只要邏輯表達(dá)式為真, while命令將反復(fù)執(zhí)行程序語(yǔ)句。舉例: 在區(qū)間2 ,
13、0.75 內(nèi),步長(zhǎng)為0.25, 對(duì)函數(shù)y=f(x) = 1 + 1 /x求值,并列表。將所得x值和y值分別存入向量r和s中,并列表顯示。r=;s=;for x=-2.0:0.25:-0.75; y=1+1/x; r=r x; s=s y;end r;svar=1 2 3 4 5 6 -1 7 8 0 ;a=;k=1;while var(k) if var(k)=-1 break; end a=a var(k).2; k=k+1;end disp(a) 例題開講不必等到循環(huán)自然結(jié)束,當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語(yǔ)句時(shí),程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語(yǔ)句的下一語(yǔ)句.continue控制跳過(guò)循環(huán)體中的某些語(yǔ)句
14、,當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語(yǔ)句時(shí),程序?qū)⑻^(guò)循環(huán)體中所有剩下的語(yǔ)句,繼續(xù)執(zhí)行下一次循環(huán)求:100,200之間第一個(gè)能被21整除的整數(shù)?for n=100:200 if rem(n,21)=0 continue end breakendn 5.2 matlab控制流控制流的其它常用指令:1、利用input函數(shù)輸入?yún)?shù),并可同時(shí)顯示出提示信息 利用disp函數(shù),可向命令窗口輸出信息2、利用keyboard函數(shù)進(jìn)入鍵盤主控狀態(tài), 直接修改或輸入變量;3、 pause error和warning指令5.2 matlab控制流1.用 input ( ) 函數(shù)輸入?yún)?shù)(1)當(dāng)輸入?yún)?shù)是數(shù)值時(shí): y=input
15、(the value of y is:); f=input(frequency is : );在指令窗的工作區(qū)中會(huì)顯示提示信息5.2 matlab控制流(2)當(dāng)直接輸入字符串變量時(shí): 需要用s選項(xiàng)對(duì)其進(jìn)行類型說(shuō)明。 y=input(methods:,s);說(shuō)明: 這里的input函數(shù)與c語(yǔ)言中的不同. 它不需要對(duì)輸入?yún)?shù)的類型進(jìn)行說(shuō)明. 如:%f,%d.x=input(請(qǐng)輸入x的值:);if x=10 y=cos(x+1)+sqrt(x*x+1);else y=x*sqrt(x+sqrt(x);endydisp(y)5.2 matlab控制流2.鍵盤控制 keyboard 說(shuō)明:1、遇到key
16、board時(shí),將“控制權(quán)”交給鍵盤,用戶可以從 鍵盤輸入各種matlab指令。2、僅當(dāng)用戶輸入return指令后,“控制權(quán)”才交還給程序keyboardm,n=size(x);if m=1 m=n; endy = sum(x)/m 5.2 matlab控制流3、pause、error和warning指令pausepause(n)暫停執(zhí)行文件,等待用戶按任意鍵后繼續(xù)暫停執(zhí)行文件n秒,在繼續(xù)執(zhí)行t=0:2*pi/99:2*pi;x=1.15*cos(t);y=3.25*sin(t); plot(x,y),axis normal,grid on,title(Normal and Grid on)di
17、sp( 以上是軸的通常設(shè)置。)disp(按任意鍵繼續(xù)!下面是X-Y軸刻度等長(zhǎng)度設(shè)置情況。)pauseplot(x,y),axis equal,grid on,title(Equal) 5.2 matlab控制流error(message)lasterrwarning(message) lastwarn顯示出錯(cuò)信息message,并終止程序顯示matlab自動(dòng)判斷的最新出錯(cuò)原因,并終止程序顯示警告信息message,程序繼續(xù)運(yùn)行顯示matlab自動(dòng)給出的最新警告信息,并繼續(xù)運(yùn)行N=4;A=rand(3);try A_N=A(N,:);catch A_end=A(end,:);endlasterr
18、lastwarn5.3 程序的調(diào)試 所謂的程序調(diào)試,就是指當(dāng)發(fā)現(xiàn)你所編制的程序無(wú)法得到你所期望的結(jié)果時(shí),所進(jìn)行的錯(cuò)誤修正。一般情況下的程序錯(cuò)誤可以分為兩類(1)格式錯(cuò)誤 這類錯(cuò)誤比較容易定位和檢查。(2)運(yùn)行錯(cuò)誤 這類錯(cuò)誤通常是因?yàn)檫壿嫽蛩惴ㄉ嫌袉?wèn)題而導(dǎo)致的錯(cuò)誤,這類問(wèn)題比較不容易找到。5.3 程序的調(diào)試錯(cuò)誤的識(shí)別:將程序每一步執(zhí)行的結(jié)果輸出到命令窗口,以檢查運(yùn)行的結(jié)果;實(shí)現(xiàn)方法:將程序中屏蔽輸出的“;”去掉。在m文件中可能發(fā)生錯(cuò)誤的地方加入keyboard,讓MATLAB程序暫停來(lái)檢查相關(guān)的信息。 注釋掉函數(shù)的定義行,將其轉(zhuǎn)換成腳本文件, 對(duì)其中的信息進(jìn)行觀測(cè)。用MATLAB提供的調(diào)試器debugger來(lái)檢查錯(cuò)誤。5.3 程序的調(diào)試 下面我們介紹如何利用調(diào)試器(debugger)進(jìn)行MATLAB的程序調(diào)試。
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼結(jié)構(gòu)連接件的智能監(jiān)測(cè)與健康維護(hù)系統(tǒng)-洞察闡釋
- 2025年中國(guó)中高檔服裝行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 年顯微鏡研究分析報(bào)告
- 跨文化家庭中代際關(guān)系的動(dòng)態(tài)變化-洞察闡釋
- 2024-2030年中國(guó)斷橋鋁門窗行業(yè)發(fā)展運(yùn)行現(xiàn)狀及投資潛力預(yù)測(cè)報(bào)告
- 中國(guó)三鹽基酸鉛行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告(2024-2030)
- 2025年中國(guó)辣醬未來(lái)發(fā)展趨勢(shì)分析及投資規(guī)劃建議研究報(bào)告
- 2025年中國(guó)流量計(jì)行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及投資方向研究報(bào)告
- 2025-2030年中國(guó)魔術(shù)褲架項(xiàng)目投資可行性研究分析報(bào)告
- 2025年中國(guó)轉(zhuǎn)轍器行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 2025年廣東省廣州市南沙區(qū)中考二模道德與法治試題
- 2025屆重慶市普通高中學(xué)業(yè)水平選擇性考試預(yù)測(cè)歷史試題(含答案)
- 2025-2030中國(guó)眼底照相機(jī)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 2024年深圳市大鵬新區(qū)區(qū)屬公辦中小學(xué)招聘教師真題
- 人教版小學(xué)語(yǔ)文四年級(jí)下冊(cè)作文范文2
- 大學(xué)語(yǔ)文試題及答案琴
- T/CSPSTC 112-2023氫氣管道工程施工技術(shù)規(guī)范
- 24春國(guó)家開放大學(xué)《農(nóng)業(yè)推廣》調(diào)查報(bào)告參考答案
- 應(yīng)急救援物資檢查維護(hù)保養(yǎng)記錄表(月度)
- 押金收據(jù)條(通用版)
- [甘肅]最新甘肅省造價(jià)文件匯編(310頁(yè))
評(píng)論
0/150
提交評(píng)論