matlab基礎(chǔ)matlab程序設(shè)計_第1頁
matlab基礎(chǔ)matlab程序設(shè)計_第2頁
matlab基礎(chǔ)matlab程序設(shè)計_第3頁
matlab基礎(chǔ)matlab程序設(shè)計_第4頁
matlab基礎(chǔ)matlab程序設(shè)計_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1,第5講 MATLAB程序設(shè)計,尚濤,電子信息工程學院 Tel2,本講目標,掌握MATLAB的幾種基本控制轉(zhuǎn)移語句 學會使用M文件進行編程 具備對復雜問題的編程求解能力,3,主要內(nèi)容,程序設(shè)計概述 MATLAB程序結(jié)構(gòu) M文件 調(diào)試,4,.1 程序設(shè)計概述,MATLAB是第四代編程語言 程序簡潔 可讀性很強 調(diào)試容易 編程效率高 易移植和維護 通過編程可求解復雜性更高或特殊的計算問題,第一代 機器語言 特征:面向機器。 第二代 匯編語言 特征:用指令符號代替二進制代碼 第三代 C、C+、pascal等 特征:面向過程 第四代 java,c#等 特征:面向?qū)ο?5,

2、與其他高級語言相比 具有語法相對簡單、使用方便、容易調(diào)試等優(yōu)點 在編程工作方式下,要求具有 數(shù)據(jù)結(jié)構(gòu) 控制流 輸入輸出 面向?qū)ο?6,編制一種擴展名為.m的MATLAB程序(簡稱M文件) 編輯環(huán)境,7,.2 MATLAB程序結(jié)構(gòu),按照程序設(shè)計的觀點, 任何算法功能都可以通過由程序模塊組成的三種基本流程控制結(jié)構(gòu)的組合來實現(xiàn): 順序結(jié)構(gòu):程序按程序語句或模塊在執(zhí)行流中的順序逐個執(zhí)行。 分支結(jié)構(gòu):程序按設(shè)定的條件實現(xiàn)程序執(zhí)行流的多路分支。 循環(huán)結(jié)構(gòu):程序按給定的條件重復地執(zhí)行指定的程序段或模塊。,8,5.2.1順序結(jié)構(gòu),程序模塊1,程序模塊2,MATLAB中實現(xiàn)順序結(jié)構(gòu)的方法非常簡單: 只需將程序語

3、句順序排列即可,9,example.m文件 theta=-pi:0.01:pi; rho(1,:)=2*sin(5*theta).2; polar(theta,rho(1,:) 執(zhí)行example,10,5.2.2 分支結(jié)構(gòu),在MATLAB中,選擇結(jié)構(gòu)由兩種語句結(jié)構(gòu)實現(xiàn): if語句 switch語句,條件,程序模塊1,成立,不成立,程序模塊2,3.2.2 選擇結(jié)構(gòu),11,if語句,if表達式 程序模塊1 else 程序模塊2 end,12,if語句的兩種變形,(1) 單分支if語句:只有一個分支的選擇結(jié)構(gòu) if表達式 程序模塊 end (2) 多分支if語句:超過2個的選擇 if表達式1 程序

4、模塊1 elseif 表達式2 程序模塊2 elseif 表達式n 程序模塊n else 程序模塊n+1 end,13,例:將百分制的學生成績轉(zhuǎn)換為五級制的成績輸出,clear n=input(輸入n= ); if n=90 r=A elseif n=80 r=B elseif n=70 r=C elseif n=60 r=D else r=E end,運行結(jié)果: 輸入n= 87 r = B,14,switch語句,switch 表達式 case 數(shù)值1 程序模塊1; case 數(shù)值2 程序模塊2; otherwise 程序模塊n end,15,例:將百分制的學生成績轉(zhuǎn)換為五級制的成績輸出使用

5、switch語句,clear n=input(輸入n= ); switch fix(n/10) %fix 取整 case 10,9 r=A case 8 r=B case 7 r=C case 6 r=D otherwise r=E end,運行結(jié)果: 輸入n= 65 r = D,16,5.2.3 循環(huán)結(jié)構(gòu),在MATLAB中,循環(huán)結(jié)構(gòu)可以由兩種語句結(jié)構(gòu)實現(xiàn): for語句循環(huán)結(jié)構(gòu) while語句循環(huán)結(jié)構(gòu),程序模塊,不成立,成立,條件,3.2.2 選擇結(jié)構(gòu),17,for語句循環(huán)結(jié)構(gòu),for循環(huán)變量起始值:步長:終止值 循環(huán)體 end,18,例:使用for結(jié)構(gòu)計算1+2+3+100,clear su

6、m=0; for i=1:100 sum=sum+i; end sum,運行結(jié)果: sum = 5050,19,while語句循環(huán)結(jié)構(gòu),while表達式 循環(huán)體 end,20,例:使用while結(jié)構(gòu)計算1+2+3+100,clear sum=0; i=0; while i100 i=i+1; sum=sum+i; end sum,運行結(jié)果: sum = 5050,21,5.3 M文件,M文件兩種形式 命令文件(Script) 命令和函數(shù)的結(jié)合 文件運行不需要輸入?yún)?shù)和輸出參數(shù) 按順序自動執(zhí)行命令 函數(shù)文件(Function) 用Function聲明 可以包含輸入?yún)?shù)和輸出參數(shù) 文件運行須給出輸

7、入?yún)?shù),自動化,模塊化,22,5.3.1基本組成結(jié)構(gòu),說明 定義變量 %包括全局變量的聲明及參數(shù)值的設(shè)定 逐行執(zhí)行命令 %指MATLAB提供的運算指令或工具箱提供的專用命令 /分支/循環(huán) %包含for,if then,switch,while等語句 逐行執(zhí)行命令 end %表示結(jié)束,可以沒有,23,5.3.2 M文件的編輯及工作路徑的設(shè)置,進入MATLAB的Editor/Debugger窗口來編輯程序 在編輯環(huán)境中,文字的不同顏色顯示表明不同屬性 綠色:注解; 黑色:程序主體; 紅色:屬性值的設(shè)定; 藍色:控制流程。 在運行程序之前,必須設(shè)置好MATLAB的工作路徑。 通過cd指令在命令窗口中

8、可以更改、顯示當前工作路徑。 通過路徑瀏覽器(path browser)可以進行設(shè)置,24,25,5.3.3命令文件,又稱為腳本文件,是一串指令的集合。 用戶只需鍵入該命令文件的文件名,系統(tǒng)就會自動逐行執(zhí)行該文件中的各條語句。 適用于小規(guī)模運算。,26,5.3.4函數(shù)文件,函數(shù)文件基本格式: function 輸出形參列表=函數(shù)名(輸入形參列表) 注釋說明語句段 程序語句段 end,27,函數(shù)內(nèi)容: (1)第一行幫助行,即H1行 以(%)開頭,作為lookfor指令搜索的行 (2)函數(shù)體說明及有關(guān)注解 以(%)開頭,用以說明函數(shù)的作用及有關(guān)內(nèi)容。如果不希望顯示某段信息,可在它的前面加空行 (3

9、)函數(shù)體語句 函數(shù)體內(nèi)使用的除返回和輸入變量這些在function語句中直接引用的變量以外的所有變量都是局部變量,即在該函數(shù)返回之后,這些變量會自動在MATLAB的工作空間中清除掉。,28,函數(shù)文件,29,函數(shù)程序使用的變量,函數(shù)程序與主程序之間的數(shù)據(jù)是通過參數(shù)進行傳遞的,函數(shù)程序應(yīng)用主程序傳遞來的參數(shù)進行計算后,將結(jié)果返回主程序。,30,%主程序exp2_9.m a=input(please input value of a=); b=input(please input value of b=); c=sumhe(a,b) % 在此例中,主程序exp2_9.m設(shè)定了兩個參數(shù)a和b來調(diào)用 %

10、 子程序sumhe.m(為一個函數(shù)文件), % 所以執(zhí)行主程序時,子程序就會調(diào)用主程序傳遞過來的 % a和b值進行計算,再將結(jié)果返回主程序。 %子程序sumhe.m %sumhe(a,b) sum the serial of numbers from a tob function result=sumhe(a,b) result=a+b; end,31,5.4局部變量和全局變量,如果一個函數(shù)內(nèi)的變量沒有特別聲明,那么這個變量只在函數(shù)內(nèi)部使用,即為局部變量。 如果兩個或多個函數(shù)共用一個變量(或者說在函數(shù)程序中也要用到主程序中的變量,注意不是參數(shù)),那么可以用global來將它聲明為全局變量。 全

11、局變量的使用可以減少參數(shù)傳遞,合理利用全局變量可以提高程序執(zhí)行的效率。,32,%主程序exp2_10.m global a %聲明變量a為全局變量 x=1:100; a=3; c=prods(x) %調(diào)用子程序prods.m %子程序prods.m function result=prods(x) global a result=a*sum(x); %聲明了與主程序一樣的全局變量a,以便在子程序中可以 %使用主程序中定義的變量,33,5. 5 人機交互,人機交互命令 echo on(off) 執(zhí)行命令前先顯示其內(nèi)容 pause(n) 程序執(zhí)行到此處,暫停n秒,或鍵入任意鍵后才繼續(xù)執(zhí)行 keyb

12、oard 程序執(zhí)行到此處暫停,屏幕顯示K,用戶可以做任何操作,需恢復運行時,鍵入return input(提示符) 程序執(zhí)行到此處暫停,屏幕顯示引號中的字符串,要求用戶輸入數(shù)據(jù) C 強行停止程序運行,34,5.6 M文件調(diào)試,兩種類型的錯誤 語法錯誤:由用戶的錯誤操作引起的 運行錯誤:算法錯誤和程序設(shè)計錯誤引起的,35,編輯器的編輯與調(diào)試,36,37,38,擴展閱讀,其他流程控制語句 1. break語句 2. continue語句 3. return語句 4. try語句 5. echo命令 6. input命令 7. keyboard命令 8. pause命令 GUI程序設(shè)計(圖形用戶界面) MATLAB應(yīng)用程序接口(API) 提供庫函數(shù) 與C或FORTRAN語言混合編程,39,其他章節(jié) Simulink系統(tǒng)建模仿真分析的軟件包 線性和非線性系統(tǒng) 連續(xù)和離散時間系統(tǒng) 圖像、視頻、聲音的處理 MATLAB的綜合應(yīng)用 電路 電力系統(tǒng) 信號與系統(tǒng) 數(shù)字信號處理 圖像處理,40,本節(jié)介紹了matlab程序設(shè)計基礎(chǔ)知識 ,通過學習應(yīng)該掌握: M文件的編寫方法 M文件的調(diào)試方法,小 結(jié),41,上機指導,M文件的調(diào)試,42,Task(1),使用M文件編輯函數(shù)文件。,43,Task(2),求1!+2!+3!+ +5!的值 clear sum=0; for i=1:5 pdr=1;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論