




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、MATLAB5程序設計課程5.1 MvM文件的功能和特點MATLAB是解釋性語言是解釋性語言語法簡單語法簡單調試容易調試容易人機交互性強人機交互性強開放性、可擴展性強開放性、可擴展性強5.1.1 M文件的建立與編輯1.建立新的M文件(1)菜單操作:直接點擊菜單New Script(2)命令操作:在MATLAB命令窗口輸入命令edit。(3)命令窗口的New菜單 Script命令。 2. 編輯已有的M文件open打開M文件 5.1.2 M文件的分類文件的分類v分類:命令文件分類:命令文件(Script File/腳本文件腳本文件)函數文件函數文件(Function File)1、命令文件、命令文
2、件(1)將需要運行的命令編輯到一個命令文件中,然后在MATLAB命令窗口輸入該命令文件的名字,就會順序執行命令文件中的命令。 (2) 對于一些比較簡單的問題 ,在指令窗中直接輸入指令計算. (3)對于復雜計算,采用命令文件最為合適.MATLAB只是按文件所寫的指令執行.命令文件命令文件vM命令文件的特點是:命令文件的構成比較簡單,只是一串按用戶意圖排列命令文件的構成比較簡單,只是一串按用戶意圖排列而成的(包括控制流和指令在內的)而成的(包括控制流和指令在內的)MATLABMATLAB指令集指令集合合M M文件中定義的變量為全局變量文件中定義的變量為全局變量. .命令文件運行后命令文件運行后 ,
3、所產生的所有變量都駐留在所產生的所有變量都駐留在 MATLABMATLAB基本工作空間基本工作空間( workspace workspace)中。只要用戶不使用清除指令)中。只要用戶不使用清除指令(clearclear),), MATLABMATLAB指令窗不關閉,這些變量將一直指令窗不關閉,這些變量將一直保存在基本工作空間中保存在基本工作空間中 例5.1 建立一個命令文件將變量a,b的值互換,然后運行該命令文件。 首先建立命令文件并以文件名存盤: clear; a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口
4、中輸入e1,將會執行該命令文件。目錄目錄函數文件函數文件v與命令文件不同與命令文件不同 ,函數文件猶如一個,函數文件猶如一個“黑箱黑箱”,把,把一些數據送進并經加工處理,再把結果送出來一些數據送進并經加工處理,再把結果送出來.vMATLAB提供的函數指令大部分都是由函數文件定義的提供的函數指令大部分都是由函數文件定義的.用用M文件自定義函數,開頭為文件自定義函數,開頭為: function yname = fname(xname)yname: 因變量名,因變量名,fname: 函數名,函數名,xname:自變量:自變量名名. 文件名為文件名為fname,即與函數名相同,即與函數名相同. 例 建
5、立一個函數文件將變量a,b的值互換,然后在命令窗口調用該函數文件。 首先建立函數文件: function a,b=e2(a,b) % ee2 c=a;a=b;b=c;調用:a,b=e2(2,3) 然后在MATLAB的命令窗口調用該函數文件: clear; x=1:10; y=11,12,13,14;15,16,17,18; x,y=e2(x,y)目錄目錄由上例可以看出函數文件的一般格式為:function 輸出表函數名(輸入表) 注釋說明部分 函數體語句函數文件的第一行必須是以關鍵字function開始,表明該文件是函數文件輸入表是以逗號相分隔的形參輸出表是函數的返回值如果返回值只有一個方括號
6、可以省略;如果返回值不止一個,輸出表中的各個變量要以逗號隔開標準的函數文件基本結構標準的函數文件基本結構 (1)函數定義行(關鍵字)函數定義行(關鍵字function)functionout1,out2,. = filename(in1,in2,.)輸入和輸出(返回)的參數個數分別由輸入和輸出(返回)的參數個數分別由nargin和和nargout兩兩個個MATLAB保留的變量來給出。保留的變量來給出。 標準的函數文件基本結構標準的函數文件基本結構 (2)第一行幫助行,即)第一行幫助行,即H1行以(行以(%)開頭,作為)開頭,作為lookfor指令搜索的行,可以使程式易于了解與管理。特別要說明的
7、指令搜索的行,可以使程式易于了解與管理。特別要說明的是,第一注解行通常用來簡短說明此是,第一注解行通常用來簡短說明此M檔案的功能,以便檔案的功能,以便lookfor能以關鍵字比對的方式來找出此能以關鍵字比對的方式來找出此M檔案。檔案。 舉例來說,的第一注解行包含舉例來說,的第一注解行包含ee2這個字,因此這個字,因此如果鍵入如果鍵入lookfor ee2,MATLAB即可列出所有在第一即可列出所有在第一注解行包含注解行包含ee2的的M檔案,因而也會被列名在內。檔案,因而也會被列名在內。 (3)函數體說明及有關注解)函數體說明及有關注解,以(以(%)開頭,)開頭,用以說明函數的作用及有關內容用以
8、說明函數的作用及有關內容(4)函數體語句)函數體語句函數體內使用的除返回和輸入變量這些在函數體內使用的除返回和輸入變量這些在function語句中直接引用的變量以外的所有變量都是局部變語句中直接引用的變量以外的所有變量都是局部變量,即在該函數返回之后,這些變量會自動在量,即在該函數返回之后,這些變量會自動在MATLAB的工作空間中清除掉。如果希望這些中的工作空間中清除掉。如果希望這些中間變量成為在整個程序中都起作用的變量,則可以間變量成為在整個程序中都起作用的變量,則可以將它們設置為全局變量將它們設置為全局變量. 例 編寫函數文件求半徑為r的圓的面積和周長。 函數文件如下: function
9、s,p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圓半徑圓半徑 %s 圓面積圓面積 %p 圓周長圓周長 s=pi*r*r; p=2*pi*r; 將以上函數文件以文件名存入c:matlabr11work下,然后在MATLAB命令窗口調用該函數: s,p=fcircle(10)目錄目錄例5.4 建立一個自變量為m, n的函數,用其構造mn矩陣,其元素隨機取均勻分布在09中的整數: function a=randint(m,n) a=floor(10*rand(m,n);以上兩句存為M文
10、件. 用法: A=randint(2,3) %z則A為23矩陣,其元素為隨機取自09中的整數. 函數M文件中的變量為局部變量,要想在Command Window 或其他M文件中可調用,必須在這些地方把此變量說明為global: 例如,global a; 注意,M文件必須存放在MATLAB的搜索路徑中才可被調用. 函數調用 函數調用的一般格式是: 輸出實參表=函數名(輸入實參表)例 利用函數文件,實現直角坐標(x,y)與極坐標(,)之間的轉換。 函數文件: function rho,theta=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); 調用的命令
11、文件: x=input(Please input x=:); y=input(Please input y=:); rho,the=tran(x,y); rho the目錄目錄 例 利用函數的遞歸調用,求n!。 遞歸調用函數文件: function f=factor(n) if n main2Please input n=:5s = 153 函數所傳遞參數的可調性 在調用函數時,MATLAB用兩個永久變量nargin和nargout分別記錄調用該函數時的輸入實參和輸出實參的個數。只要在函數文件中包含這兩個變量,就可以準確地知道該函數文件被調用時的輸入輸出參數個數,從而決定函數如何進行處理。目錄
12、目錄 例5.7 nargin用法示例。 函數文件: function fout=ex(a,b,c) if nargin=1 fout=a; elseif nargin=2 fout=a+b; elseif nargin=3 fout=(a*b*c)/2; end 命令文件: x=1:3;y=1;2;3; ex(x) ex(x,y) ex(x,y,3)目錄目錄 mydemoans = 1 2 3ans = 2 4 6ans = 215.2 數據的輸入輸出5.2.1 input函數 調用格式為: A=input(提示信息,選項); 其中,提示信息為一個字符串,用于提示用戶輸入什么樣的數據。 如果在
13、input函數調用時采用s選項,則允許用戶輸入一個字符串。例如,想輸入一個人的姓名,可采用命令: xm=input(Whats your name?,s) Whats your name?xiaoweixm = xiaowei目錄目錄 5.2.2 disp函數 調用格式為 disp(輸出項) 其中輸出項既可以為字符串,也可以為矩陣。 注意:用disp函數顯示矩陣時將不顯示矩陣的名字,而且其格式更緊密,且不留任何沒有意義的空行。目錄目錄 例 求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input(a=?); b=input(b=?); c=input(c=?); d=b*b-4*
14、a*c; x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a); disp(x1=,num2str(x(1),x2=,num2str(x(2)目錄目錄disp(x) 顯示顯示x的內容,與的內容,與x 的區別是:的區別是:前者僅顯示前者僅顯示x的內容,后者多個的內容,后者多個x=.a=? 3b=? 4c=? 9 5.2.3 pause函數 其調用格式為: pause(延遲秒數) 如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續執行。 若要強行中止程序的運行可使用Ctrl+C命令。目錄目錄5.2.4 函數句柄 函數句柄是matlab6特有的語言結
15、構,其優點:v方便地實現函數間互相調用v兼容函數加載的所有方式v拓寬子函數包括局部函數的使用范圍v提高函數調用的可靠性v減少程序設計中的冗余v提高重復執行的效率v數組、結構數組、細胞型數組結合定義數據函數句柄的創建和顯示 定義函數句柄的定義只需在提示符后添加相應函數的函數名 f_h=plotf_h = plot 函數句柄的內容通過functions顯示 functions(f_h)ans = function: plot type: overloaded file: MATLAB built-in function methods: 1x1 struct matlab的函數類型 simple
16、未加載的內部函數、m文件 overloaded 加載的內部函數、m文件 subfunction 子函數 constructor matlab類的創建函數 private 局部函數函數句柄的調用和操作可通過函數feval進行函數句柄的調用 feval(函數句柄) f_h1=peaks feval(f_h1) feval(函數句柄,參數列表) f_h=plot feval(f_h,0:10,0:10)函數句柄與函數名字符串轉換 func2str 函數名字符串轉換函數句柄 funh=str2func(det) funh = det str2func 函數句柄轉換函數名字符串 func2str(fun
17、h) ans = detMATLAB流程控制流程控制v循環語句循環語句 for, whilev條件轉移條件轉移 if end, if elseif else endv開關語句開關語句 switch casev注釋語句注釋語句 %v中斷語句中斷語句 breakv暫停語句暫停語句 pausev回顯語句回顯語句 echo on/off(用來控制m文件在執行過程中是否顯示)v 在條件表達式中,通常都是由 關系操作符 , ,=, = =, = 等 邏輯操作符 &,| , 等 邏輯函數:isequal 若是相等則為真 isempty 若是空矩陣則為真 isstr 若是字符串則為真 5.3 選擇結構
18、 5.3.1 if語句 在在MATLAB中,中,if語句有語句有3種格式。種格式。 1.單分支單分支if語句語句 語句格式為:語句格式為: if 條件 語句組 end 當條件成立時,則執行語句組,執行完之后繼續當條件成立時,則執行語句組,執行完之后繼續執行執行if語句的后繼語句,若條件不成立,則直接執行語句的后繼語句,若條件不成立,則直接執行if語句的后繼語句。語句的后繼語句。目錄目錄 語句格式為: if 條件 語句組1 else 語句組2 end 當條件成立時,執行語句組1,否則執行語句組2,語句組1或語句組2執行后,再執行if語句的后繼語句。目錄目錄 例計算分段函數值目錄目錄程序如下: x
19、=input(請輸入請輸入x的值的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y請輸入請輸入x的值的值:y =12 語句格式為:if 條件1 語句組1 elseif 條件2 語句組2 elseif 條件m 語句組m else 語句組m+1end目錄目錄 例 輸入一個字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導字符,若為數字字符則輸出其對應的數值,若為其他字符則原樣輸出。目錄目錄 c=input(請輸入一個字符,s); if c=A & c=a& c=0& c *I
20、nner matrix dimensions must agree. 5.4 循環結構 5.4.1 for語句基本格式基本格式for 循環變量起始值:步長:終止值循環變量起始值:步長:終止值 循環體循環體end步長缺省值為步長缺省值為1 1,可以在正實數或負實數范圍內任,可以在正實數或負實數范圍內任意指定。對于正數,循環變量的值大于終止值時,意指定。對于正數,循環變量的值大于終止值時,循環結束;對于負數,循環變量的值小于終止值時,循環結束;對于負數,循環變量的值小于終止值時,循環結束。循環結構可以嵌套使用。循環結束。循環結構可以嵌套使用。目錄目錄 for i=1:5for i=1:5 for
21、j=1:5 for j=1:5 a(i,j)=1/(i+j-1); a(i,j)=1/(i+j-1); end endendenda=a= 例 求定積分 。程序如下: a=0;b=3*pi;n=1000; h=(b-a)/n; x=a:h:b; f=exp(-0.5*x).*sin(x+pi/6); for i=1:n s(i)= (f(i)+f(i+1)*h/2; end s=sum(s) 目錄目錄 事實上,MATLAB提供了有關數值積分的標準函數,實際應用中可直接調用這些函數求數值積分。s = 754/837 例例 已知求已知求y的表達式,的表達式, 當當n=100時,求時,求y的值。的值
22、。 當當n為任意輸入值時,求為任意輸入值時,求y的值的值 目錄目錄在實際在實際MATLAB編程中,為提高程序的執行速度,常用向量編程中,為提高程序的執行速度,常用向量運算來代替循環操作:運算來代替循環操作: n=100; i=1:n; f=1./i.2; y=sum(f)for語句更一般的格式:語句更一般的格式:for 循環變量=矩陣表達式 循環體語句 end 執行過程是依次將矩陣的各列元素賦給循環變量,然后執行循環體語句,直至各列元素處理完畢。實際上,“表達式1:表達式2:表達式3”是一個僅為一行的矩陣(行向量),因而列向量是單個數據。目錄目錄 例5.15 已知5個學生4門功課的成績,求每名
23、學生的總成績。程序如下:s=0;a=65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87for k=a s=s+k;enddisp(s);目錄目錄a = 65 76 56 78 98 83 74 85 76 67 78 79 98 58 42 73 67 89 76 87 275 340 300 271 319 5.4.2 while語句 while語句一般用于不能事先確定循環次數的情況 while語句的一般格式為: while (條件) 循環體語句 end 其執行過程為:若條件成立,則執行循環體語句,執行后再判斷條件是否成立,
24、如果不成立則跳出循環(如圖所示)。目錄目錄While循環和循環和for循環的區別在于,循環的區別在于,while循環結構循環結構的循環體被執行的次數不是確定的,而的循環體被執行的次數不是確定的,而for結構中循結構中循環體的執行次數是確定的。環體的執行次數是確定的。例 用循環求解例 用循環求解 最小的 m(1)s=0;for i=1:100 s=s+i;end(2) s=0;i=1; while (i=100) s=s+i;i=i+1; end(3) sum(1:100)用用while循環語句編寫一個計算循環語句編寫一個計算1000以內的以內的Fibonacci數:數: f=1 1; i=1; f= 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 與循環結構相關的還有一個break語句,當在循環體內執行到該語句時,程序將跳出循環。該語句一般與if語句配合使用。 例 用while語句實現例。 程序如下: y=0; i=1; while 1 f=1/i/i; y=y+f; if i=100 break; end i=i+1; end y 5.4.3 循環的嵌套v如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 窗簾行業品牌形象塑造與傳播考核試卷
- 糧油企業生產流程標準化與質量控制考核試卷
- 木地板品牌國際化戰略與市場拓展考核試卷
- 彈射玩具產品創新設計思路與方法考核試卷
- 砼結構構件的預制件疲勞試驗考核試卷
- 紡織品的耐磨性與強度分析考核試卷
- 半導體照明器件的環境適應性測試標準考核試卷
- 線上線下融合的衛浴零售模式探索考核試卷
- 天津城建大學《形勢與政策(5)》2023-2024學年第二學期期末試卷
- 三門峽職業技術學院《基本樂理專業理論教學》2023-2024學年第二學期期末試卷
- 2025年裝維智企工程師(三級)復習模擬100題及答案
- 2024國家能源集團新疆哈密能源化工有限公司社會招聘110人筆試參考題庫附帶答案詳解
- 糖尿病飲食與護理
- 2025年天津市河東區中考一模歷史試題(原卷版+解析版)
- 停送電培訓課件
- 醫院培訓課件:《核心制度-護理值班和交接班制度》
- 解題秘籍05 圓的綜合問題(9種題型匯-總+專題訓練)(解析版)-2025年中考數學重難點突破
- 《基于STM32的智能水質檢測系統的設計》9400字(論文)
- 無線網絡施工方案
- 公路養護員工安全教育培訓
- 重慶大渡口區公安分局輔警招聘考試真題2024
評論
0/150
提交評論