4matlab編程初步_第1頁
4matlab編程初步_第2頁
4matlab編程初步_第3頁
4matlab編程初步_第4頁
4matlab編程初步_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、matlab編程初步編程初步2021年12月16日2matlab 編程入門編程入門q matlab 編程簡介編程簡介u matlab 作為一種廣泛應用于科學計算的工具軟件,不僅具有強大的數(shù)值計算、符號計算、矩陣運算能力和豐富的繪圖功能,同時也具有和 c、fortran 等高級語言一樣進行程序設計。u 在 matlab 程序設計中,要充分利用 matlab 數(shù)據(jù)結(jié)構(gòu)的特點,提高編程效率。u 利用 matlab 的程序控制功能,可以將有關(guān) matlab 命令編成程序存儲在一個文件中(m 文件),然后在命令窗口中運行該文件,matlab 就會自動依次執(zhí)行文件中的命令,直到全部命令執(zhí)行完畢。2021年

2、12月16日3q 用 matlab 語言編寫的程序稱為 m 文件。q m 文件是由若干 matlab 命令組合在一起構(gòu)成的,它可以完成某些操作,也可以實現(xiàn)某種算法。事實上,matlab 提供的內(nèi)部函數(shù)以及各種工具箱,都是利用 matlab 語言開發(fā)的 m 文件。用戶也可以結(jié)合自己的工作需要,開發(fā)自己的程序或工具箱。q m 文件根據(jù)調(diào)用方式的不同可以分為兩類:u script:腳本文件/命令文件 u function:函數(shù)文件 m 文件文件q m 文件以 .m 為擴展名。m腳本文件腳本文件m函數(shù)文件函數(shù)文件腳本文件與函數(shù)文件的區(qū)別腳本文件與函數(shù)文件的區(qū)別2021年12月16日7q m 文件是一個

3、文本文件,可以用任何文本編輯器來建立和編輯,通常使用 matlab 自帶的 m 文件編輯器。m 文件的建立與打開文件的建立與打開q 新建一個 m 文件u 菜單操作 ( file new m-file )u 命令操作 ( edit m 文件名 )u 命令按鈕 ( 快捷鍵 )q 打開已有的 m 文件u 菜單操作 ( file open )u 命令操作 ( edit m 文件名 )u 命令按鈕 ( 快捷鍵 )u 雙擊 m 文件 m文件路徑的加載文件路徑的加載2021年12月16日9u 在命令窗口中輸入 f2cs,即可執(zhí)行該 m 文件。5(32)9cf例:編寫一個腳本文件將華氏溫度轉(zhuǎn)化為攝氏溫度腳本文

4、件舉例腳本文件舉例clear; % 清除當前工作空間中的變量清除當前工作空間中的變量f=input(please input fahrenheit temperature:);c=5*(f-32)/9;fprintf(the centigrade temperature is %gn,c);u 新建一個 m 文件 f2cs.m,內(nèi)容如下:腳本文件運行后,文件中所產(chǎn)生的所有變量都駐所有變量都駐留在留在 matlab 當前工作空間當前工作空間,可以用 whos 查看。2021年12月16日10關(guān)系運算關(guān)系運算小于大于=大于等于=等于=不等于l 比較大小,如果結(jié)論是 真真 則返回 1 ,否則返回 0

5、l 注意 = 與 = 的區(qū)別l 關(guān)系操作符能用來比較兩個同樣大小的數(shù)組,或用來比較一個數(shù)組和一個標量,在后一種情況,標量和數(shù)組中的每一個元素相比較,比較結(jié)果與數(shù)組大小一樣。q 關(guān)系關(guān)系運算符運算符2021年12月16日11例:例:關(guān)系運算舉例關(guān)系運算舉例 2+2=4 ans=1 23 ans=0 a=1 3 5; 2 0 6; a=1 3 5 b=3 1 0 ans=0 1 1 b=3 1 0; 2 4 6; 2 0 6 2 4 6 1 0 1 a=b x=5 0; 4 2; x=5 0 ans=0 1 xany(a) any按列運算a=0 2 ans=1 1 3 4 all(a) 5 6 a

6、ns=0 1 all也按列運算2021年12月16日15q 程序控制結(jié)構(gòu)有三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。任何復雜的程序都由這三種基本結(jié)構(gòu)組成。u 順序結(jié)構(gòu)順序結(jié)構(gòu)m文件控制流文件控制流l 按排列順序依次執(zhí)行各條語句,直到程序的最后。l 這是最簡單的一種程序結(jié)構(gòu),一般涉及數(shù)據(jù)的輸入輸出、數(shù)據(jù)的計算或處理等。2021年12月16日16例:例:a=input(please input a: )u 數(shù)據(jù)的輸入:inputa=input(提示信息提示信息)l 其中 提示信息 為字符串,l 該命令要求用戶輸入 a 的值 (可以是數(shù)或字符串)數(shù)據(jù)輸入數(shù)據(jù)輸入 inputa=input(提示信息提示信息

7、, s)注:注:此時輸入的字符串不要加單引號!l 如果是輸入字符串,也可以使用下面的方法name=input(whats your name? , s)例:例:2021年12月16日17disp(x)輸出變量 x 的值的值,可以是數(shù)值矩陣或字符串 b=1 2 3; 4 5 6; 7 8 9; disp(b)數(shù)據(jù)輸出數(shù)據(jù)輸出 dispu 數(shù)據(jù)的輸出:disp a=hello,tom !; disp(a)例:例:2021年12月16日18數(shù)據(jù)輸出數(shù)據(jù)輸出 fprintffprintf(fid,format,variables)按指定的格式將變量的值輸出到指定的文件u 數(shù)據(jù)的輸出:fprintfl

8、fid 為文件句柄,若缺省,則將變量的值輸出到屏幕上l format 用來指定數(shù)據(jù)輸出時采用的格式,常見的有 %e ( 采用科學計算形式采用科學計算形式 ) %f ( 采用浮點數(shù)形式采用浮點數(shù)形式 ) %g ( 由系統(tǒng)自動選取上述兩種格式之一由系統(tǒng)自動選取上述兩種格式之一) %s ( 輸出字符串輸出字符串) l format 中還可以使用一些特殊格式,如:n ( 換行換行 ) t ( 制表符制表符 ) b ( 退格退格 ) ( 反斜桿反斜桿 ) % ( 百分號百分號 ) 2021年12月16日19數(shù)據(jù)輸出數(shù)據(jù)輸出 fprintf a=hello; b=2.4; c=100*pi; fprint

9、f(a=%s,b=%f,c=%en,a,b,c)a=hello ,b=2.400000, c=3.141593e+002例:例:l format 中的輸出格式要與輸出變量一一對應l 可以沒有輸出變量 fprintf(today is the 77 anniversary of the mukden incidentn)例:例:2021年12月16日20pauseu 程序的暫停:pausepause 或或 pause(n)若想強行終止程序的運行,可以使用 ctrl+c其中 n 是延遲時間,以秒為單位;若缺省,則將暫停程序,直到用戶按任意鍵后繼續(xù)l pause off 屏蔽程序中所有屏蔽程序中所有

10、 pause 的作用的作用l pause on 打開打開 pause 的作用的作用2021年12月16日21選擇結(jié)構(gòu)選擇結(jié)構(gòu) 是根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語句。matlab 用于實現(xiàn)選擇結(jié)構(gòu)的語句有 if 語句和 switch 語句。選擇結(jié)構(gòu)選擇結(jié)構(gòu)2021年12月16日22l 單分支結(jié)構(gòu)if expression (條件)(條件) statements (語句組)(語句組)endif 條件語句條件語句if expression (條件)(條件) statements1(語句組(語句組1)else statements2(語句組(語句組2)endl 雙分支結(jié)構(gòu)2021年12月1

11、6日23if expression1 (條件1) statements1(語句組1)elseif expression2 (條件2) statements2(語句組2) . . elseif expressionm (條件m) statementsm(語句組m)else statements(語句組)endl 多分支結(jié)構(gòu)if 條件語句條件語句2021年12月16日24if 語句舉例語句舉例u 數(shù)論中的一個有趣問題:任取一個正整數(shù),如果是數(shù)論中的一個有趣問題:任取一個正整數(shù),如果是偶數(shù),用偶數(shù),用 2 除,如果是奇數(shù),用除,如果是奇數(shù),用 3 乘再加乘再加 1,反復,反復這個過程,直到所得到的數(shù)

12、為這個過程,直到所得到的數(shù)為 1。問:是否存在使該過程永不中止的整數(shù)問:是否存在使該過程永不中止的整數(shù)? (exp01.m)2021年12月16日25while 1 n=input(please enter n(nonpositive quit):); m=n; if n1 if rem(n,2)=0 n=n/2; else n=3*n+1; end fprintf(n n=%d,n); end fprintf(n %d is not we need! continue . n,m);endif 語句舉例語句舉例2021年12月16日26l 根據(jù)表達式的不同取值,分別執(zhí)行不同的語句。switc

13、h expression (表達式)(表達式) case value1 (表達式(表達式1) statement1(語句組(語句組1) case value2 (表達式(表達式2) statement2(語句組(語句組2) . . case valuem (表達式(表達式m) statementm(語句組(語句組m) otherwise statement (語句組)(語句組)endswitch 語句語句2021年12月16日27l matlab 首先計算 expression 的值,然后將它依次與各個 case 指令后的檢測值進行比較,當比較結(jié)果為真時,就執(zhí)行相應的語句組,然后跳出 swit

14、ch 結(jié)構(gòu)。l switch 后面的表達式 expression 的值可以是一個標量或字符串。switch 語句語句l otherwise 指令可以不出現(xiàn)。l 如果所有的比較結(jié)果都為假,則執(zhí)行 otherwise 后面的語句組,然后跳出 switch 結(jié)構(gòu)。2021年12月16日28循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 是按照給定的條件,重復執(zhí)行指定的語句。matlab 用于實現(xiàn)循環(huán)結(jié)構(gòu)的語句有 for 語句語句和 while 語句語句循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)2021年12月16日29for variable=expression statement(循環(huán)體)end循環(huán)變量循環(huán)變量l 表達式 expression 可以是

15、行向量,也可以是矩陣for 循環(huán)循環(huán)clear;y=0; n=100;for k=1:n y=y+1/(2*k-1);end例:例:已知已知 ,當 n=100 時,求 y 的值12151311ny2021年12月16日30l 循環(huán)語句可以嵌套使用while 循環(huán)循環(huán)while expression (條件) statement(循環(huán)體)endl 不能在 for 循環(huán)體內(nèi)改變循環(huán)變量的值l 為了提高代碼的運行效率,應盡可能提高代碼的向量化程度,避免 for 循環(huán)的使用l 如果預先就知道循環(huán)的次數(shù),則可以采用 for 循環(huán);否則,如果預先無法確定循環(huán)的次數(shù),則可以使用 while 循環(huán)。2021年

16、12月16日31l 這個例子給出了計算 eps 的一種方法。l 這里我們用大寫 eps,因此系統(tǒng)中 eps 的值不會被覆蓋。當 eps=eps 時,條件仍成立;而當 eps=eps/2 時,條件為假,退出循環(huán),所以最后應有 eps=eps/2。num 用來記錄循環(huán)次數(shù)。u 計算 matlab 中 eps 值 (exp02.m)while 循環(huán)舉例循環(huán)舉例num=0; eps=1;while (1+eps)1 eps=eps/2; num=num+1;end eps為浮點運算的相對精度 2021年12月16日32u break 和 continuel break 語句用于終止循環(huán)的執(zhí)行,即跳出最

17、內(nèi)層循環(huán) l continue 語句用于結(jié)束本次循環(huán),進行下一次循環(huán) l break 和 continue 一般與 if 語句配合使用其它流控制語句其它流控制語句u returnl return 語句用于退出正在運行的腳本或函數(shù),通常用在函數(shù)文件中。2021年12月16日33 首先由計算機隨機產(chǎn)生一個首先由計算機隨機產(chǎn)生一個 1,100 之間的一個整數(shù),之間的一個整數(shù),然后由用戶猜測所產(chǎn)生的這個數(shù)。根據(jù)用戶猜測的情然后由用戶猜測所產(chǎn)生的這個數(shù)。根據(jù)用戶猜測的情況給出不同的提示,如果猜測的數(shù)大于產(chǎn)生的數(shù),則況給出不同的提示,如果猜測的數(shù)大于產(chǎn)生的數(shù),則顯示顯示 “high” ,小于則顯示,小于則

18、顯示 “ low ” ,等于則顯示,等于則顯示 “you win!”,同時退出游戲。用戶最多有,同時退出游戲。用戶最多有 7 次機會。次機會。(exp03.m)程序示例程序示例u 猜數(shù)游戲2021年12月16日34% 猜數(shù)游戲猜數(shù)游戲clear;x=round(100*rand); % 由計算機隨機產(chǎn)生一個由計算機隨機產(chǎn)生一個0,100的整數(shù)的整數(shù)n=7; % 有有7次機會次機會test=1;disp(歡迎參加猜數(shù)游戲!你共有歡迎參加猜數(shù)游戲!你共有,num2str(n),次機會次機會);disp(請輸入一個請輸入一個0到到100之間的一個整數(shù)之間的一個整數(shù));for k=1:n guess=

19、input(enter your guess: ); if guess x disp(high); else disp(you win!); test=0; break; end n=n-1; disp(你還有你還有,num2str(n),次機會!次機會!);endif test=1 disp(you lost!)end程序示例程序示例2021年12月16日35function 輸出形參列表輸出形參列表=函數(shù)名函數(shù)名(輸入形參列表輸入形參列表)% 注釋說明部分注釋說明部分(可選可選)函數(shù)體語句函數(shù)體語句(必須必須)u 第一行為第一行為引導行引導行,表示該,表示該 m文件是函數(shù)文件文件是函數(shù)文件

20、u 函數(shù)名的命名規(guī)則與變量名相同函數(shù)名的命名規(guī)則與變量名相同 ( 必須以字母開頭必須以字母開頭 )u 當輸出形參多于一個時,用當輸出形參多于一個時,用方括號方括號括起來括起來u 函數(shù)必須是一個函數(shù)必須是一個單獨的單獨的 m文件文件u 函數(shù)函數(shù)文件名文件名必須與必須與函數(shù)名函數(shù)名一致一致u 以以百分號百分號開始的語句為開始的語句為注釋語句注釋語句函數(shù)文件函數(shù)文件q 函數(shù)文件由 function 語句引導2021年12月16日36function y = myfliplr(x)% returns x with row preserved and columns% flipped in the le

21、ft/right direction% % x = 1 2 3 becomes 3 2 1% 4 5 6 6 5 4% num_col=size(x,2); % 取取 x 的列數(shù)的列數(shù)y = x(:,num_col:-1:1);先輸入矩陣x,而后寫上myfliplr(x)函數(shù)文件舉例函數(shù)文件舉例myfliplr.m2021年12月16日37function printyh(n)% 打印楊輝三角形打印楊輝三角形, 本函數(shù)沒有輸出參數(shù)本函數(shù)沒有輸出參數(shù)yh=1; disp(yh); if n=1, return; endyh=1,1; disp(yh);for k=3:n yh_old=yh; k

22、2=ceil(k/2); for l=2:k2 yh(l)=yh_old(l-1)+yh_old(l); end yh(k2+1:k)=yh(k-k2:-1:1); disp(yh);end (在matlab中可輸入printyh(5))函數(shù)文件舉例函數(shù)文件舉例printyh.m2021年12月16日38q 函數(shù)調(diào)用的一般格式函數(shù)調(diào)用的一般格式輸出實參列表輸出實參列表=函數(shù)名函數(shù)名(輸入實參列表輸入實參列表)u 函數(shù)調(diào)用時,函數(shù)調(diào)用時,實參的順序?qū)崊⒌捻樞驊c函數(shù)定義時的應與函數(shù)定義時的形參的順形參的順序序一致。一致。 u 函數(shù)可以函數(shù)可以嵌套調(diào)用嵌套調(diào)用,即一個函數(shù)可以被其它函數(shù)調(diào)用,即一個函數(shù)可以被其它函數(shù)調(diào)用,甚至可以被它自身調(diào)用,此時稱為甚至可以被它自身調(diào)用,此時稱為遞歸調(diào)用遞歸調(diào)用。u 函數(shù)所傳遞的參數(shù)具有可調(diào)性,函數(shù)所傳遞的參數(shù)具有可調(diào)性,matlab 用兩個永久變用兩個永久變量量 nargin 和和 nargout 分別記錄調(diào)用該函數(shù)時的輸入實分別記錄調(diào)用該函數(shù)時的輸入實參和輸出實參的

溫馨提示

  • 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

提交評論