Matlab基礎及其應用教程0課件3_第1頁
Matlab基礎及其應用教程0課件3_第2頁
Matlab基礎及其應用教程0課件3_第3頁
Matlab基礎及其應用教程0課件3_第4頁
Matlab基礎及其應用教程0課件3_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章MATLAB程序設計【本章學習目標】掌握建立和執(zhí)行腳本的方法。掌握利用if語句、switch語句實現(xiàn)選擇結構的方法。掌握利用for語句、while語句實現(xiàn)循環(huán)結構的方法。熟悉利用向量運算來代替循環(huán)操作的方法。掌握定義和調(diào)用MATLAB函數(shù)的方法。3.1 腳本MATLAB命令執(zhí)行方式交互式的命令執(zhí)行方式:在命令行窗口逐條輸入命令,MATLAB逐條解釋執(zhí)行。腳本方式:將有關命令編成程序存儲在一個擴展名為.m的文件中,每次運行該腳本,MATLAB就會自動依次執(zhí)行腳本中的命令。3.1 腳本1MATLAB編輯器MATLAB編輯器界面包括功能區(qū)和編輯區(qū)兩個部分。3.1.1 腳本的編輯功能區(qū)編輯區(qū)3.

2、1 腳本2啟動MATLAB編輯器(1)單擊 MATLAB桌面的“主頁”選項卡工具條中的“新建腳本”按鈕(2)在MATLAB命令行窗口輸入命令:edit 文件名(3)在“命令歷史記錄”面板選中一些命令(按住Ctrl鍵可同時選擇多條命令),然后從右鍵菜單中選擇“創(chuàng)建腳本”命令3.1.1 腳本的編輯3.1 腳本【例3.1】建立一個腳本,其功能是:用兩個實變量R、M生成復變量RM,然后運行該腳本。建立腳本文件并以文件名setcomp.m保存在當前目錄下。3.1.1 腳本的編輯clear;R=1,2,3;4,5,6;M=11,12,13;14,15,16;RM=complex(R,M);在MATLAB編

3、輯器的“編輯器”選項卡中單擊“運行”按鈕,或在MATLAB的命令行窗口中輸入腳本文件名:setcomp,然后按Enter鍵。3.1 腳本1實時編輯器實時腳本在MATLAB實時編輯器中創(chuàng)建、編輯、調(diào)試。3.1.2 實時腳本功能區(qū)編輯區(qū)輸出區(qū)3.1 腳本2啟動MATLAB實時編輯器(1)單擊MATLAB桌面的“主頁”選項卡工具條中的“新建實時腳本”按鈕(2)在MATLAB命令行窗口輸入命令:edit 文件名.mlx(3)在命令歷史記錄面板選中一些命令(按住Ctrl可同時選多條命令),然后從右鍵快捷菜單中選擇“創(chuàng)建實時腳本”命令3.1.2 實時腳本3.1 腳本3代碼的分節(jié)運行實時腳本通常包含很多命令

4、,有時只需要運行其中一部分,這時可通過設置分節(jié)標志,將全部代碼分成若干代碼片段(也稱為代碼單元)。3.1.2 實時腳本3.2 程序控制結構1input函數(shù)用于打開一個輸入框來獲取數(shù)據(jù),該函數(shù)的調(diào)用格式為:A=input(提示信息)其中,提示信息為一個字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。3.2.1 順序結構 A=input(輸入A矩陣:)輸入A矩陣:1,2,3;4,5,6A = 1 2 3 4 5 6若要輸入一個字符串,輸入的字符串前后加單撇號或雙引號,界定字符串的起始和結束。3.2 程序控制結構1input函數(shù)若要輸入一個字符串,輸入的字符串前后加單撇號或雙引號,界定字符串的起始和結束。輸入

5、一個字符串也可以使用以下調(diào)用方法:A=input(提示信息, s)3.2.1 順序結構 xm=input(Whats your name?,s)Whats your name?Tommy Tunexm = Tommy Tune xm=input(What is your name?)What is your name?Tommy Tunexm = Tommy Tune3.2 程序控制結構2disp函數(shù)用于在命令窗口顯示變量和表達式的值,其調(diào)用格式為disp(輸出項)其中,輸出項既可以為字符串,也可以為矩陣。3.2.1 順序結構 A=Hello,World!; disp(A)Hello,Worl

6、d! A=1, 2, 3; 4, 5, 6; disp(A) 1 2 3 4 5 63.2 程序控制結構1if語句3.2.2 選擇結構if 條件1 語句塊1elseif 條件2 語句塊2elseif 條件n 語句塊nelse 語句塊n+1end圖3.3 if語句的執(zhí)行過程3.2 程序控制結構【例3.2】計算分段函數(shù):3.2.2 選擇結構x=input(請輸入x的值:);if x0 y=abs(x);elseif x10 y=sin(x)./(x+1);elseif x=A & c=a & c=0 & c=9 disp(str2double(c)2);else disp(c);end3.2 程序

7、控制結構2switch語句3.2.2 選擇結構switch 測試表達式 case 結果表1 語句塊1 case 結果表2 語句塊2 case 結果表n 語句塊n otherwise 語句塊n+1 end圖3.4 switch語句的執(zhí)行過程3.2 程序控制結構【例3.4】輸入一個字符,若為大寫字母,則輸出其對應的小寫字母;若為小寫字母,則輸出其對應的大寫字母;若為數(shù)字字符則輸出其對應數(shù)的平方,若為其他字符則原樣輸出。3.2.2 選擇結構c=input(請輸入一個字符:,s);switch c case num2cell(A:Z) disp(lower(c); case num2cell(a:z)

8、 disp(upper(c); case num2cell(0:9) disp(c-0)2); otherwise disp(c);end3.2 程序控制結構3try語句一種試探性執(zhí)行語句,為開發(fā)人員提供了一種捕獲錯誤的機制,其格式為:3.2.2 選擇結構try 語句塊1catch 變量 語句塊2endtry語句先試探性執(zhí)行語句塊1,如果語句塊1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給catch后的變量,并轉去執(zhí)行語句塊2。catch后的變量是一個MException類的對象,其message屬性用于返回錯誤的說明。3.2 程序控制結構【例3.5】矩陣乘法運算要求兩矩陣的維度相容,否則會出錯。編

9、寫程序,求兩矩陣的乘積,若出錯,則顯示出錯的原因。3.2.2 選擇結構A=input(請輸入A矩陣:);B=input(請輸入B矩陣:);try C=A*B; disp(C)catch err disp(err.message)end程序執(zhí)行結果如下:請輸入A矩陣:1,2,3;4,5,6請輸入B矩陣:7,8,9;10,11,12內(nèi)部矩陣維度必須一致3.2 程序控制結構1for語句用于處理能事先確定循環(huán)次數(shù)的情況。其中,表達式1的值為循環(huán)變量的初值,表達式2的值為步長,表達式3的值為循環(huán)變量的終值。步長為1時,表達式2可以省略。3.2.3 循環(huán)結構for 循環(huán)變量=表達式1:表達式2:表達式3

10、循環(huán)體語句end圖3.5 for語句執(zhí)行過程3.2 程序控制結構【例3.6】一個各位數(shù)字的立方和等于該數(shù)本身的3位整數(shù)稱為水仙花數(shù)。輸出全部水仙花數(shù)。3.2.3 循環(huán)結構shu=; %建立一個空矩陣shu,用于存放結果for n=100:999 n1=fix(n/100); %求n的百位數(shù)字 n2=mod(fix(n/10),10); %求n的十位數(shù)字 n3=mod(n,10); %求n的個位數(shù)字 if n=n1*n1*n1+n2*n2*n2+n3*n3*n3 shu=shu,n; %存入結果 endenddisp(shu)3.2 程序控制結構【例3.7】已知 ,求y的值。3.2.3 循環(huán)結構

11、y=0;n=100;f=1;for i=1:n y=y+f/i; f=-f;enddisp(y=,num2str(y)3.2 程序控制結構在MATLAB中,for語句也可以采用以下格式:for 循環(huán)變量 = 矩陣 循環(huán)體語句End【例3.8】寫出下列程序的執(zhí)行結果。3.2.3 循環(huán)結構s=0;a=1,2,3,4;31,41,51,61;101,102,103,104;for k=a s=s+k;enddisp(s)3.2 程序控制結構2while語句3.2.3 循環(huán)結構While 條件 循環(huán)體語句end圖3.6 while語句執(zhí)行過程3.2 程序控制結構【例3.9】求使 的最小的n。3.2.3

12、 循環(huán)結構y=0;n=0;while (y=1.5) n=n+1; y=y+1/n/n;enddisp(滿足條件的n是:,num2str(n)3.2 程序控制結構3break語句和continue語句break語句用于終止循環(huán)的執(zhí)行。continue語句控制跳過循環(huán)體中的某些語句。3.2.3 循環(huán)結構3.2 程序控制結構【例3.10】輸入兩個整數(shù),求它們的最小公倍數(shù)。3.2.3 循環(huán)結構x=input(請輸入第一個數(shù):);y=input(請輸入第二個數(shù):);z1=max(x,y);z=0;while z a1,a2=sumfraction(2,5)a1 = 1.0929a2 = 0.35713

13、.3 函數(shù)【例3.14】n的階乘在數(shù)學上定義為:3.3.2 函數(shù)調(diào)用函數(shù)文件factorialfun.m定義如下:function f=factorialfun(n)if n fun1=(x)3*x.*x+5*x+6; a=1:1:4; c=fun1(a)c = 14 28 48 74 fun2=(x,y)x.*x-y.*y; a=7:10; b=1:4; z=fun2(a,b)z = 48 60 72 843.3 函數(shù)函數(shù)文件中的變量的作用域默認是局部的全局變量用global命令定義,命令格式為:global var1 var2 . varN變量var1、var2、varN之間用空格分隔。3

14、.3.5 全局變量與局部變量3.3 函數(shù)【例3.16】全局變量應用示例。先建立函數(shù)文件wmean.m,該函數(shù)計算輸入?yún)?shù)加權平均值。建立的腳本文件meanmain.m,調(diào)用函數(shù)wmean。3.3.5 全局變量與局部變量function f=wmean(x,y)global w1 w2;f=(w1*x+w2*y)/(w1+w2);global w1 w2w1=3;w2=4;wavemean=wmean(92,86);disp(加權平均值為: ,num2str(wavemean)3.4 程 序 調(diào) 試應用程序的錯誤有兩類語法錯誤:語法或文法的錯誤,如函數(shù)名拼寫錯、表達式書寫錯、數(shù)據(jù)類型錯誤等運行時

15、的錯誤:程序的運行結果有錯誤,也稱為程序邏輯錯誤。常用的辦法:通過觀測中間結果來發(fā)現(xiàn)錯誤可能發(fā)生的程序段,以便進一步分析錯誤的原因。3.4.1 程序調(diào)試概述3.4 程 序 調(diào) 試應用程序的錯誤有兩類語法錯誤:語法或文法的錯誤,如函數(shù)名拼寫錯、表達式書寫錯、數(shù)據(jù)類型錯誤等運行時的錯誤:程序的運行結果有錯誤,也稱為程序邏輯錯誤。常用的辦法:通過觀測中間結果來發(fā)現(xiàn)錯誤可能發(fā)生的程序段,以便進一步分析錯誤的原因。(1)使用MATLAB編輯器,在打開的腳本中設置斷點。(2)在命令行窗口里調(diào)用調(diào)試函數(shù)3.4.1 程序調(diào)試概述3.4 程 序 調(diào) 試MATLAB編譯器提供3類與調(diào)試有關的功能模塊“斷點”命令組

16、提供設置、清除斷點的命令“運行”命令組提供運行腳本的命令“調(diào)試”命令組提供調(diào)試中的控制單步運行的命令。1斷點操作2控制單步運行3.4.2 MATLAB調(diào)試模塊3.4 程 序 調(diào) 試【例3.17】在如圖3.8所示的編輯器窗口中,有一個求兩個數(shù)的最小公倍數(shù)的程序commulti.m,試設置斷點來控制程序執(zhí)行。3.4.2 MATLAB調(diào)試模塊3.5 程序性能分析與優(yōu)化利用MATLAB的探查器、tic函數(shù)和toc函數(shù)提供的分析報告能幫助用戶探尋影響程序運行速度的“瓶頸”所在,以便于進行代碼優(yōu)化。打開探查器有3種方法:(1)在命令行窗口中調(diào)用profile函數(shù)。(2)單擊MATLAB桌面“主頁”選項卡中

17、的“運行并計時”按鈕。(3)單擊MATLAB編輯器的“編輯器”選項卡中的“運行并計時”按鈕。3.5.1 程序性能分析3.5 程序性能分析與優(yōu)化假定當前文件夾下有腳本文件profilertest.m,文件中包含如下代碼:t=linspace(0,2*pi,100);x=sin(t);y=t.*cos(t);plot(x,y)在MATLAB的命令行窗口輸入以下命令: profile on profilertest profile viewer3.5.1 程序性能分析3.5 程序性能分析與優(yōu)化3.5.2 程序優(yōu)化用循環(huán)結構實現(xiàn),程序如下:n=100000;y=0;for x=1:n y=y+1/x/(x+1);end用向量求和的方法實現(xiàn),程序如下:n=100000;vx=1:n;x=1./vx./(vx+1);y=sum(x);后一種方法比前一種方法運行時間短。3.5 程序性能分析與優(yōu)化(2)預分配內(nèi)存空間。通過在循環(huán)之前預分配向量或數(shù)組的內(nèi)存空間可以提高for循環(huán)的處理速度。3.5.2 程序優(yōu)化程序1:clear;a

溫馨提示

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

評論

0/150

提交評論