第七講matlab的程序設計_第1頁
第七講matlab的程序設計_第2頁
第七講matlab的程序設計_第3頁
第七講matlab的程序設計_第4頁
第七講matlab的程序設計_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七節(jié) matlab的程序設計 matlab語言稱為第四代編程語言,程序簡潔、可讀性很強而且調試十分容易。 是matlab重要組成部分。m文件簡介v用戶如想靈活應用matlab去解決實際問題,充分調用matlab的科學技術資源,就需要編輯m文件v包含matlab語言代碼的文件稱為m文件,其擴展名為m。v編輯m文件可使用各種文本編輯器。一、matlab的工作模式v指令驅動模式 通常matlab以指令驅動模式工作,即在matlab 窗口下當用戶輸入單行指令時,matlab 立即處理這條指令,并顯示結果,這就是matlab命令行方式。 命令行操作時,matlab窗口只允許一次執(zhí)行一行上的一個或幾個語

2、句。例如:x1=0:10 x1 = 0 1 2 3 4 5 6 7 8 9 10 x2=0:3:11x2 = 0 3 6 9x3=11.5:-3:0 x3 = 11.5000 8.5000 5.5000 2.5000 x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 = 0 1 2 3 4 5 6 7 8 9 10 x2 = 0 3 6 9x3 = 11.5000 8.5000 5.5000 2.5000v在matlab窗口輸入數(shù)據(jù)和命令進行計算時,當處理復雜問題和大量數(shù)據(jù)時是不方便的。因此應編輯m文件。命令行方式程序可讀性差,而且不能存儲,對于復雜的問題,應編寫成能存儲的程

3、序文件。vm文件模式將matlab語句構成的程序存儲成以m為擴展名的文件,然后再執(zhí)行該程序文件,這種工作模式稱為程序文件模式。程序文件不能在指令窗口下建立,因為指令窗口只允許一次執(zhí)行一行上的一個或幾個語句。二、m文件的創(chuàng)建v m文件的類型是普通的文本文件,我們可以使用系統(tǒng)認可的文本文件編輯器來建立m文件。如dos下的edit,windows的記事本和word等。v具體的創(chuàng)建方法:1.在matlab命令窗 口點擊file 菜單 new m-file2. 點擊file save workspace as 將工作空間中的內容存入文件。3. !edit 用dos 下edit 編輯器編制m文件。4. e

4、dit 用matlab自帶的編輯器編制m文件。5. word 用word編輯m文件。v m文件編輯器的設定 m文件編輯器可自己設定,設定方法是matlab命令窗口 options 菜單下點擊 edit preference 選定m文件編輯器。m文件編輯器缺省設置是 c:windowsnotepad.exe 還可設成:c:windowswrite.exe c: c:program fileofficewinword.exe 注意:所創(chuàng)建的m文件必須納入matlab搜索路 徑后,才能在matlab命令窗口運行。 vmatlab搜索路徑的設置 matlab 缺省路徑是c:matlabbin 1. c

5、d c:myfile 2. path(path,c:myfile) 3. 打開matlabrc.m文件,將c:myfile加上即可。 4. 用pathtool路徑瀏覽器設定當前目錄。三、matlab文件的類型1.數(shù)據(jù)文件 .matv mat文件是matlab以標準二進制格式保存的數(shù)據(jù)文件,可將工作空間中有用的數(shù)據(jù)變量保存下來。v mat文件的生成和調用是由函數(shù)save和load完成的。例如:load gatlin image(x)colormap(gray);axis equal; axis(off)100200300400500600501001502002503003504004502.

6、m文件 m文件的語法類似于c語言,但又有其自身特點。它只是一個簡單的ascii碼文本文件,執(zhí)行程序時逐行解釋運行程序,matlab是解釋性的編程語言。 m文件有兩類獨立的m文件 稱命令文件 可調用m文件 稱函數(shù)文件(1). 命令文件 簡單的m文件 命令文件實際上是一串指令的集合,與在命令窗口逐行執(zhí)行文件中的所有指令,其結果是一樣的。沒有輸入輸出參數(shù)。v命令文件包括兩部分:注釋文件和程序文件%ranknumber of linearly independent rows or columns.% k = rank(x) is the number of singular values of x%

7、 that are larger than max(size(x) * norm(x) * eps.% k = rank(x,tol) is the number of singular values of x that% are larger than tol.% copyright (c) 1984-94 by the mathworks, inc.s = svd(x);if (nargin = 1) tol = max(size(x) * max(s) * eps;endr = sum(s tol);程序部分(2).matlab內置函數(shù)文件 matlab自定義的函數(shù)文件稱內置函數(shù)文件 調

8、用內置函數(shù)的方法:使用函數(shù)名并給出相應的入口、出口參數(shù)即可。 例如:sin.m函數(shù)用type sin查不到。 調用格式:y=sin(2*x) 實際應用中: x=0:2*pi/180:2*pi; y=sin(2*x) plot(x,y)01234567-1-0.8-0.6-0.4-0.200.20.40.60.81又如 sqrt(x) 求x的平方根 abs(x) 求x的絕對值 det(a) 求行列式的值 等等。matlab擁有大量的內置數(shù)學函數(shù),供我們在數(shù)值運算和符號運算中調用。(3). 函數(shù)m文件 需要輸入變量,返回輸出變量v matlab用戶可以根據(jù)需要編輯自己的m文件,它們可以像庫函數(shù)一樣

9、方便的調用,從而極大地擴展了matlab 的能力。v 對于某一類特殊問題,如創(chuàng)建了許多m函數(shù)文件,則可形成新的工具箱。v這種用matlab語言創(chuàng)建定義新的matlab函數(shù)的功能,正體現(xiàn)了matlab語言強大的擴展功能。函數(shù)m文件的格式: function 返回變量=函數(shù)名(輸入變量) 注釋說明語句段 程序語句段特定規(guī)則:1.函數(shù)m文件第一行必須以單詞function作為引導詞,必須遵循如下形式: function =()2.m文件的文件名必須是 .m。3.程序中的變量均為局部變量,不保存在工作空間中。 其變量只在函數(shù)運行期間有效。(4). 系統(tǒng)文件s函數(shù) 用于描述系統(tǒng)運動的專用函數(shù),是特殊的

10、m 文件。 s 函數(shù)有3類: 由simulink結構圖自動創(chuàng)建 可用c語言程序設計mex文件直 接定義 用函數(shù)m文件編寫 s函數(shù)一旦創(chuàng)建,即可在框圖中使用,也可在文件中調用。s函數(shù)的調用格式 sys, x0=sfunction( t, x, u, flag) s函數(shù)與函數(shù)m文件類似,只是輸入、輸出變量是限定的。系統(tǒng)狀態(tài)狀態(tài)初值用戶定義的系統(tǒng)當前時刻當前狀態(tài)值當前輸入值標志量(4). 函數(shù)句柄 函數(shù)句柄是matlab6特有的語言結構,其優(yōu)點:v方便地實現(xiàn)函數(shù)間互相調用v兼容函數(shù)加載的所有方式v拓寬子函數(shù)包括局部函數(shù)的使用范圍v提高函數(shù)調用的可靠性v減少程序設計中的冗余v提高重復執(zhí)行的效率v數(shù)組、

11、結構數(shù)組、細胞型數(shù)組結合定義數(shù)據(jù)函數(shù)句柄的創(chuàng)建和顯示 定義函數(shù)句柄的定義只需在提示符后添加相應函數(shù)的函數(shù)名 f_h=plotf_h = plot 函數(shù)句柄的內容通過functions顯示 functions(f_h)ans = function: plot type: overloaded file: matlab built-in function methods: 1x1 struct matlab的函數(shù)類型 simple 未加載的內部函數(shù)、m文件 overloaded 加載的內部函數(shù)、m文件 subfunction 子函數(shù) constructor matlab類的創(chuàng)建函數(shù) private

12、 局部函數(shù)函數(shù)句柄的調用和操作可通過函數(shù)feval進行函數(shù)句柄的調用 feval(函數(shù)句柄) f_h1=peaks feval(f_h1) feval(函數(shù)句柄,參數(shù)列表) f_h=plot feval(f_h,0:10,0:10)函數(shù)句柄與函數(shù)名字符串轉換 func2str 函數(shù)名字符串轉換函數(shù)句柄 funh=str2func(det) funh = det str2func 函數(shù)句柄轉換函數(shù)名字符串 func2str(funh) ans = det四、matlab的程序結構 matlab語言的程序結構與其它高級語言是一致的,分為順序結構,循環(huán)結構,分支結構。(1).順序結構 依次順序執(zhí)行程

13、序的各條語句(2).循環(huán)結構 被重復執(zhí)行的一組語句,循環(huán)是計算機解決問題的主要手段。 循環(huán)語句主要有: for end語法為: for i = 表達式 (表達式為一個向量) 可執(zhí)行語句 end例:利用for循環(huán)求1!+2!+3!+ +5!的值 sum=0; for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end sum=sum+pdr; endsum = 153 while end 循環(huán) while循環(huán)將循環(huán)體中的語句循環(huán)執(zhí)行不定次數(shù)。 語法為:while 表達式 循環(huán)體語句 end 表達式一般是由邏輯運算和關系運算以及一般運算組成的,以判斷循環(huán)的進行和停止;只要表

14、達式的值 非0,繼續(xù)循環(huán);直到表達式值為0,循環(huán)停止。例:用while循環(huán)求1100間整數(shù)的和 sum=0; i=1; while i, ,=, = =, = 等 邏輯操作符 &,| , 等 邏輯函數(shù):isequal 若是相等則為真 isempty 若是空矩陣則為真 isstr 若是字符串則為真例:編寫m函數(shù),計算函數(shù)值 x (x1) 2x-1 (1x=10)五、matlab程序流的控制 matlab的控制語句同c語言有相似之處, 但沒有c 語言復雜、靈活和多變。因而語法比較簡單,容易掌握。vecho 指令 用來控制m文件在執(zhí)行過程中是否 顯示 echo on 打開所有命令文件的顯示方

15、式 echo off 關閉所有命令文件的顯示方式 echo 在以上兩者間切換 v echo對于命令文件函數(shù)文件有所不同,命令文件用法簡單,函數(shù)對所有命令起作用;函數(shù)文件用法較復雜,具體請help查詢。 echo file on 打開file函數(shù)文件的顯示方式 echo file off 關閉file函數(shù)文件的顯示方式 echo file 切換file函數(shù)文件的顯示方式 echo on all 打開所有函數(shù)文件的顯示方式 echo off all 關閉所有函數(shù)文件的顯示方式vinput 提示用戶從鍵盤輸入數(shù)值、字符串、表達式。 例:n=input(how many apples= )how ma

16、ny apples= 5n = 5vpause 暫停,等待用戶響應 可令m文件執(zhí)行暫停,并在繼續(xù)執(zhí)行前按任一個鍵 。vkeyboard 與input類似,功能更強 keyboard 調用鍵盤與調用m文件一樣,當keyboard在m文件中出現(xiàn)時,它停止文件的執(zhí)行并控制鍵盤,用于修改程序。vbreak 中斷 break 中斷for, while循環(huán)語句的執(zhí)行,在嵌套循環(huán)結構中, break進從最里層循環(huán)推出。vmenu 產(chǎn)生一個擁護可選擇輸入的菜單 格式:k=menu( 標題,菜單1,菜單2 )六、文件操作 matlab文件輸入、輸出(i/o)函數(shù)允許把其它格式的數(shù)據(jù)文件直接讀進matlab,它是

17、以c語言文件i/o函數(shù)為基礎的。1.打開和關閉文件(fopen, fclose) 格式:fid=fopen(數(shù)據(jù)文件,r) r 讀 w 寫 a 附加 rt 讀寫v文件一旦打開,即可進行讀寫操作。 sta=fclose(fid) 關閉上述打開文件 sta=fclose(all) 關閉所有打開的文件v與save,load類似,是matlab專用數(shù)據(jù)文件讀寫工具(*.mat)。2. 讀寫二進制數(shù)據(jù)文件 fread, fwrite 可讀寫數(shù)據(jù)文件,文本文件。例:fid=fopen(user.dat,r) a=fread(fid,50) sta=fclose(fid)七、應用程序接口 應用程序接口是matlaab的附加組件。是一個由相關函數(shù)組成的接口函數(shù)庫,可實現(xiàn)與外部程序的交互。vmex文件:是matlab環(huán)境下調用c、fortran 語言編寫的應用程序模塊。vmatlab 計算引擎:在使用c、fortran編程時 可調用matlab函數(shù)庫進行計算。vmat文

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論