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

下載本文檔

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

文檔簡(jiǎn)介

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

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ù)和命令進(jìn)行計(jì)算時(shí),當(dāng)處理復(fù)雜問(wèn)題和大量數(shù)據(jù)時(shí)是不方便的。因此應(yīng)編輯m文件。命令行方式程序可讀性差,而且不能存儲(chǔ),對(duì)于復(fù)雜的問(wèn)題,應(yīng)編寫成能存儲(chǔ)的程

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

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

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

6、m文件 m文件的語(yǔ)法類似于c語(yǔ)言,但又有其自身特點(diǎn)。它只是一個(gè)簡(jiǎn)單的ascii碼文本文件,執(zhí)行程序時(shí)逐行解釋運(yùn)行程序,matlab是解釋性的編程語(yǔ)言。 m文件有兩類獨(dú)立的m文件 稱命令文件 可調(diào)用m文件 稱函數(shù)文件(1). 命令文件 簡(jiǎn)單的m文件 命令文件實(shí)際上是一串指令的集合,與在命令窗口逐行執(zhí)行文件中的所有指令,其結(jié)果是一樣的。沒(méi)有輸入輸出參數(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內(nèi)置函數(shù)文件 matlab自定義的函數(shù)文件稱內(nèi)置函數(shù)文件 調(diào)

8、用內(nèi)置函數(shù)的方法:使用函數(shù)名并給出相應(yīng)的入口、出口參數(shù)即可。 例如:sin.m函數(shù)用type sin查不到。 調(diào)用格式:y=sin(2*x) 實(shí)際應(yīng)用中: 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的絕對(duì)值 det(a) 求行列式的值 等等。matlab擁有大量的內(nèi)置數(shù)學(xué)函數(shù),供我們?cè)跀?shù)值運(yùn)算和符號(hào)運(yùn)算中調(diào)用。(3). 函數(shù)m文件 需要輸入變量,返回輸出變量v matlab用戶可以根據(jù)需要編輯自己的m文件,它們可以像庫(kù)函數(shù)一樣

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

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

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

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

13、序的各條語(yǔ)句(2).循環(huán)結(jié)構(gòu) 被重復(fù)執(zhí)行的一組語(yǔ)句,循環(huán)是計(jì)算機(jī)解決問(wèn)題的主要手段。 循環(huán)語(yǔ)句主要有: for end語(yǔ)法為: for i = 表達(dá)式 (表達(dá)式為一個(gè)向量) 可執(zhí)行語(yǔ)句 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)體中的語(yǔ)句循環(huán)執(zhí)行不定次數(shù)。 語(yǔ)法為:while 表達(dá)式 循環(huán)體語(yǔ)句 end 表達(dá)式一般是由邏輯運(yùn)算和關(guān)系運(yùn)算以及一般運(yùn)算組成的,以判斷循環(huán)的進(jìn)行和停止;只要表

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論