




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 第05講 MATLAB程序設計數(shù)據(jù)和函數(shù)的可視化主要內容1、M文件2、matlab控制流3、matlab程序調試5.1 M文件 1、MATLAB的M文件有兩種(腳本文件和函數(shù)文件)腳本文件:將原來要在MATLAB環(huán)境直接輸入的語句, 放在一個以.m為后綴的文件中。函數(shù)文件:它的第一行必須是函數(shù)定義行, 用來標示其與腳本文件的不同, 也存在.m文件中。 5.1 M文件腳本文件的特點:1.)它是一串按用戶意圖排列而成的(包括控制流 向指令在內的)MATLAB指令集合。2.) 腳本文件運行后,所產(chǎn)生的所有變量都駐留在 MATLAB基本空間(workspace)中。只要用戶 不使用clear指令加以
2、清除,且MATLAB指令窗不 關閉,就可非常方便地從工作區(qū)中查詢當前某個變 量的計算情況。 5.1 M文件函數(shù)文件的構成(由5個部分組成)(1)函數(shù)定義行(腳本文件無需定義行) 位于函數(shù)文件的首行,以MATLAB關鍵字function開頭,函數(shù)名以及函數(shù)的輸入輸出變量都在這一行定義。 function f,g=fname(x,y);(2)函數(shù)信息說明行(H1) 緊隨函數(shù)定義行之后的以%開頭的注釋行的第一行。H1行包括:大寫體的函數(shù)文件名; 運用關鍵詞簡要描述的函數(shù)功能。H1行作用: 供help幫助使用(3)函數(shù)幫助文本 H1行及其之后的連續(xù)以%開頭的所有注釋行構成整個在線 幫助文本。 通常包括
3、:函數(shù)輸入輸出變量含義 函數(shù)調用格式的說明 5.1 M文件(4)函數(shù)體 是指完成指定功能的MATLAB指令集合,它接收輸入變量,進行程序流控制,得到輸出變量??烧{用任何可用的MATLAB提供的函數(shù)和用戶自己定義的函數(shù)。(5)注釋 是指在函數(shù)體中對某些程序行所進行的注釋。以%標注,可以出現(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ù)工作空間每當函數(shù)文件運行時,matlab會為它開辟一個臨時工作空間稱之為函數(shù)工作空間。說明:1、函數(shù)工作空間相對于基本工作空間是獨立的、臨時的2、函數(shù)工作空間隨具體函數(shù)
5、文件的調用而產(chǎn)生,隨調用結束而刪除3、函數(shù)運行時產(chǎn)生的所有中間變量都存放在函數(shù)工作空間中4、函數(shù)執(zhí)行完成后,臨時函數(shù)空間及所有的中間變量即被清除 5.1 M文件3、 函數(shù)的輸入、輸出變量相同點: MATLAB中,函數(shù)的輸入、輸出變量的含義與C語言的函數(shù)相同。異同點: 實際調用時,所用的輸入、輸出變量的個數(shù)可以少于原定義函數(shù)的變量的個數(shù)。5.1 M文件4、 局部變量和全局變量局部變量: 是存在于函數(shù)工作空間內部的中間變量,產(chǎn)生于函數(shù)的運行過程中,影響范圍僅限于該函數(shù)本身。全局變量: 通過globle指令定義的變量,可以同時由幾個不同的函數(shù)工作空間以及基本工作空間共享。 全局變量應用示例.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ù)說明: 1、與c語言相似,matlab中也可以定義子函數(shù), 來擴充函數(shù)的功能2、子函數(shù)只能被主函數(shù)或同一主函數(shù)下的其它子函數(shù)所調用定義: 在函數(shù)文件中題頭定義的函數(shù)被稱為 主函數(shù) 函數(shù)體內定義的其它函數(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提供了五種控制程序流的結構: for 循環(huán)結構 while 循環(huán)結構 if-else-end分支結構 switch-case 結構 try-catch 結構條件控制語句 5.2 matlab控制流1.if-else-end分支結構,條件控制語句。 (1)單分支 if expression commands end 如果表達式expression為真,執(zhí)行組命令commands,否則跳過該組命令。例: 假設定義mn的矩陣A。下面的語句是判斷 矩陣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 表達式為真時,執(zhí)行命令commands1else commands2 表達式為假時,執(zhí)行命令commands2end5.2 matlab控制流判決表達式2(3)多分支 if expression1 commands1 elseif expression2 commands2 else commandsk end判決表達式1表達式1為真,執(zhí)行commands1,結束此結構表達式
9、1為假,而表達2為真, 執(zhí)行commands2,結束此結構當前面所有表達式均為假時,執(zhí)行該組命令說明:表達式為空時,MATLAB認為表達式為假。例: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結構,條件控制語句switch ex case test1 commands1 case test2 commands2 case testk commandsk otherwi
10、se commandsend ex為一標量或字符串當ex等于test1時,執(zhí)行組命令1,然后跳出該結構當ex等于testk時,執(zhí)行組命令k,然后跳出該結構當表達式不等于前面所有的檢測值時,則執(zhí)行該組命令檢測擲一次骰子所得的點數(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 說明:case后的檢測值可以是標量、字符
11、串和元胞數(shù)組 若檢測值是元胞數(shù)組,matlab將表達式的值和元胞數(shù)組 中的所有值進行比較,只要元胞數(shù)組中有一個元素與表 達式的值相等,則認為比較結果為真。 5.2 matlab控制流3. try-catch 結構,條件控制語句try commands1catch commands2end執(zhí)行commands1,若正確,則跳出此結構若執(zhí)行commands1時出現(xiàn)錯誤,則執(zhí)行commands2N=4;A=rand(3);try A_N=A(N,:) catch A_end=A(end,:) endlasterr顯示最新出錯信息,并終止程序%如果取A(N,:)出錯,則改取A的最后一行5.2 matl
12、ab控制流4.指定重復次數(shù)的循環(huán)語句for variable=expression statementsend說明:在for和variable之間需要有一個空格。這里的variable 是循環(huán)變量名。在表達式中給出循環(huán)的初始值、步長和終值。功能:這個命令就是反復執(zhí)行一條語句或一組語句,而執(zhí)行的次數(shù)已預先定義好。以end結束這組語句 5.2 matlab控制流5.不指定重復次數(shù)的循環(huán)語句 說明: 無論是for循環(huán)還是while循環(huán)均可用break語句終止循環(huán)。while expression commandsend功能:只要邏輯表達式為真, while命令將反復執(zhí)行程序語句。舉例: 在區(qū)間2 ,
13、0.75 內,步長為0.25, 對函數(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)自然結束,當在循環(huán)體內執(zhí)行到該語句時,程序將跳出循環(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句.continue控制跳過循環(huán)體中的某些語句
14、,當在循環(huán)體內執(zhí)行到該語句時,程序將跳過循環(huán)體中所有剩下的語句,繼續(xù)執(zhí)行下一次循環(huán)求:100,200之間第一個能被21整除的整數(shù)?for n=100:200 if rem(n,21)=0 continue end breakendn 5.2 matlab控制流控制流的其它常用指令:1、利用input函數(shù)輸入?yún)?shù),并可同時顯示出提示信息 利用disp函數(shù),可向命令窗口輸出信息2、利用keyboard函數(shù)進入鍵盤主控狀態(tài), 直接修改或輸入變量;3、 pause error和warning指令5.2 matlab控制流1.用 input ( ) 函數(shù)輸入?yún)?shù)(1)當輸入?yún)?shù)是數(shù)值時: y=input
15、(the value of y is:); f=input(frequency is : );在指令窗的工作區(qū)中會顯示提示信息5.2 matlab控制流(2)當直接輸入字符串變量時: 需要用s選項對其進行類型說明。 y=input(methods:,s);說明: 這里的input函數(shù)與c語言中的不同. 它不需要對輸入?yún)?shù)的類型進行說明. 如:%f,%d.x=input(請輸入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 說明:1、遇到key
16、board時,將“控制權”交給鍵盤,用戶可以從 鍵盤輸入各種matlab指令。2、僅當用戶輸入return指令后,“控制權”才交還給程序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( 以上是軸的通常設置。)disp(按任意鍵繼續(xù)!下面是X-Y軸刻度等長度設置情況。)pauseplot(x,y),axis equal,grid on,title(Equal) 5.2 matlab控制流error(message)lasterrwarning(message) lastwarn顯示出錯信息message,并終止程序顯示matlab自動判斷的最新出錯原因,并終止程序顯示警告信息message,程序繼續(xù)運行顯示matlab自動給出的最新警告信息,并繼續(xù)運行N=4;A=rand(3);try A_N=A(N,:);catch A_end=A(end,:);endlasterr
18、lastwarn5.3 程序的調試 所謂的程序調試,就是指當發(fā)現(xiàn)你所編制的程序無法得到你所期望的結果時,所進行的錯誤修正。一般情況下的程序錯誤可以分為兩類(1)格式錯誤 這類錯誤比較容易定位和檢查。(2)運行錯誤 這類錯誤通常是因為邏輯或算法上有問題而導致的錯誤,這類問題比較不容易找到。5.3 程序的調試錯誤的識別:將程序每一步執(zhí)行的結果輸出到命令窗口,以檢查運行的結果;實現(xiàn)方法:將程序中屏蔽輸出的“;”去掉。在m文件中可能發(fā)生錯誤的地方加入keyboard,讓MATLAB程序暫停來檢查相關的信息。 注釋掉函數(shù)的定義行,將其轉換成腳本文件, 對其中的信息進行觀測。用MATLAB提供的調試器debugger來檢查錯誤。5.3 程序的調試 下面我們介紹如何利用調試器(debugger)進行MATLAB的程序調試。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年營養(yǎng)與食品安全專業(yè)考試題目及答案
- 2025年社會工作者考試試卷及答案
- 2025年生物科學專業(yè)相關試題及答案
- 2025年生物技術與工程考試試卷及答案
- 2025年核工程師考試試題及答案
- 2025年環(huán)境保護與可持續(xù)發(fā)展考試試題及答案
- 萬科管家測評題庫及答案
- 徐州市大許中學2024-2025高二年級數(shù)學4月階段測試試卷答案
- 2025年成品漿板包裝輸送系統(tǒng)合作協(xié)議書
- 字節(jié)跳動企業(yè)管理分析
- 《海底電纜工程預算定額(試行)》
- 馬拉松方案策劃
- 高處作業(yè)力學基礎知識
- 幼兒園科學發(fā)現(xiàn)室環(huán)境布置設計方案
- 《企業(yè)的績效管理問題與優(yōu)化策略的分析案例-以舍得酒業(yè)公司為例9100字》
- 畢業(yè)設計(論文)-基于PLC的自動上料系統(tǒng)設計
- 武裝部面試題及答案
- T-NXS 0116T-2024 寧夏灘羊肉質量追溯標準體系構建應用技術規(guī)范
- 《困難氣道的處理》課件
- 微弱的光亮(2024年山東煙臺中考語文試卷記敘文閱讀試題)
- 食品安全質檢員的崗位職責分析
評論
0/150
提交評論