版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、專題四專題四專題四專題四 MATLAB程序設(shè)計(jì)程序設(shè)計(jì) 4.1 M文件 4.2 數(shù)據(jù)的輸入輸出 4.3 選擇結(jié)構(gòu) 4.4 循環(huán)結(jié)構(gòu) 4.5 函數(shù)文件 4.6 局部變量和全局變量 4.7 數(shù)據(jù)類型 專題四專題四m文件簡介文件簡介n用戶如想靈活應(yīng)用用戶如想靈活應(yīng)用Matlab去解決實(shí)際問題,去解決實(shí)際問題,充分調(diào)用充分調(diào)用Matlab的科學(xué)技術(shù)資源,就需要的科學(xué)技術(shù)資源,就需要編輯編輯m文件。文件。n包含包含Matlab語言代碼的文件稱為語言代碼的文件稱為m文件,其文件,其擴(kuò)展名為擴(kuò)展名為m。n編輯編輯m文件可使用各種文本編輯器。文件可使用各種文本編輯器。專題四專題四一、一、Matlab的工作模式
2、的工作模式n指令驅(qū)動(dòng)模式指令驅(qū)動(dòng)模式n 通常通常Matlab以指令驅(qū)動(dòng)模式工作,以指令驅(qū)動(dòng)模式工作,即在即在Matlab 窗口下當(dāng)用戶輸入單行指令時(shí),窗口下當(dāng)用戶輸入單行指令時(shí),Matlab 立即處理這條指令,并顯示結(jié)果,立即處理這條指令,并顯示結(jié)果,這就是這就是Matlab命令行方式。命令行方式。n 命令行操作時(shí),命令行操作時(shí),Matlab窗口只允許窗口只允許一次執(zhí)行一行上的一個(gè)或幾個(gè)語句。一次執(zhí)行一行上的一個(gè)或幾個(gè)語句。專題四專題四例如:例如: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 =
3、 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.5000在在Matlab窗口輸入數(shù)據(jù)和命令進(jìn)行計(jì)算時(shí),當(dāng)處理窗口輸入數(shù)據(jù)和命令進(jìn)行計(jì)算時(shí),當(dāng)處理復(fù)雜問題和大量數(shù)據(jù)時(shí)是不方便的。因此應(yīng)編輯復(fù)雜問題和大量數(shù)據(jù)時(shí)是不方便的。因此應(yīng)編輯m文件。文件。專題四專題四命令行方式程序可讀性差,而且不能存儲(chǔ),命令行方式程序可讀性差,而且不能存儲(chǔ),對(duì)于復(fù)雜的問題,應(yīng)編寫成能存儲(chǔ)的程序文對(duì)于復(fù)雜的
4、問題,應(yīng)編寫成能存儲(chǔ)的程序文件。件。m文件模式文件模式將將Matlab語句構(gòu)成的程序存儲(chǔ)成以語句構(gòu)成的程序存儲(chǔ)成以m為擴(kuò)展為擴(kuò)展名的文件,然后再執(zhí)行該程序文件,這種工名的文件,然后再執(zhí)行該程序文件,這種工作模式稱為程序文件模式。作模式稱為程序文件模式。程序文件不能在指令窗口下建立,因?yàn)橹噶畛绦蛭募荒茉谥噶畲翱谙陆?,因?yàn)橹噶畲翱谥辉试S一次執(zhí)行一行上的一個(gè)或幾個(gè)語窗口只允許一次執(zhí)行一行上的一個(gè)或幾個(gè)語句。句。專題四專題四4.1 M4.1 M文件文件4.1.1 M文件的建立與編輯文件的建立與編輯1.建立新的建立新的M文件文件 (1)菜單操作:菜單操作:MATLAB命令窗口的命令窗口的File菜單
5、菜單 New菜單項(xiàng)菜單項(xiàng) M-file命令。命令。 (2)命令操作:在命令操作:在MATLAB命令窗口輸入命令命令窗口輸入命令edit。 (3)命令按鈕操作:單擊命令按鈕操作:單擊MATLAB命令窗口工命令窗口工具欄上的具欄上的“新建命令按鈕。新建命令按鈕。 2. 編輯已有的編輯已有的M文件文件 4.1.2 M文件的分類文件的分類分類:分類: 獨(dú)立的獨(dú)立的m文件文件 稱命令文件稱命令文件(Script File),主程序主程序 命令文件實(shí)際上是一串指令的集合,與在命令窗命令文件實(shí)際上是一串指令的集合,與在命令窗口逐行執(zhí)行文件中的所有指令,其結(jié)果是一樣的。口逐行執(zhí)行文件中的所有指令,其結(jié)果是一樣
6、的。沒有輸入輸出參數(shù)。沒有輸入輸出參數(shù)。 可調(diào)用可調(diào)用m文件文件 稱函數(shù)文件稱函數(shù)文件(Function File),子程序子程序 第一行包含第一行包含function,需要輸入變量,返回輸,需要輸入變量,返回輸出變量出變量主要區(qū)別主要區(qū)別: 命令文件的變量在文件執(zhí)行完后保存在內(nèi)存中,命令文件的變量在文件執(zhí)行完后保存在內(nèi)存中,而函數(shù)文件內(nèi)定義的變量僅在函數(shù)文件內(nèi)部起作而函數(shù)文件內(nèi)定義的變量僅在函數(shù)文件內(nèi)部起作用,執(zhí)行完函數(shù)文件后,這些內(nèi)部變量將被清除。用,執(zhí)行完函數(shù)文件后,這些內(nèi)部變量將被清除。 例例4.1 4.1 建立一個(gè)命令文件將變量建立一個(gè)命令文件將變量a,ba,b的值互換,然后的值互換
7、,然后運(yùn)行該命令文件。運(yùn)行該命令文件。 首先建立命令文件并以文件名首先建立命令文件并以文件名exch.mexch.m存盤:存盤: clear all;clear all; a=1:10; b=11,12,13,14;15,16,17,18; a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; c=a;a=b;b=c; a a b b 然后在然后在MATLABMATLAB的命令窗口中輸入的命令窗口中輸入exchexch,將會(huì)執(zhí)行,將會(huì)執(zhí)行該命令文件。該命令文件。exchexch 例4.2 建立一個(gè)函數(shù)文件將變量a,b的值互換,然后在命令窗口調(diào)用該函數(shù)文
8、件。 首先建立函數(shù)文件 fexch.m: function a,b = fexch(a,b) c=a; a=b; b=c; 然后在MATLAB的命令窗口調(diào)用該函數(shù)文件: clear all; x=1:10; y=11,12,13,14;15,16,17,18; x,y=fexch(x,y)專題四專題四4.2 4.2 數(shù)據(jù)的輸入輸出數(shù)據(jù)的輸入輸出4.2.1 input4.2.1 input函數(shù)函數(shù)調(diào)用格式為:調(diào)用格式為: A=input (A=input (提示信息,選項(xiàng)提示信息,選項(xiàng)) ); 其中提示信息為一個(gè)字符串,用于提示用其中提示信息為一個(gè)字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。戶輸入什么
9、樣的數(shù)據(jù)。 A=input(A= )A=input(A= )如果在如果在inputinput函數(shù)調(diào)用時(shí)采用函數(shù)調(diào)用時(shí)采用s s選項(xiàng),則允許選項(xiàng),則允許用戶輸入一個(gè)字符串。例如,想輸入一個(gè)用戶輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令:人的姓名,可采用命令: xm = input (Whats your name?, s)xm = input (Whats your name?, s)專題四專題四 4.2.2 disp函數(shù) 調(diào)用格式為: disp(輸出項(xiàng)) 其中輸出項(xiàng)既可以為字符串,也可以為矩陣。 注意:用disp函數(shù)顯示矩陣時(shí)將不顯示矩陣的名字,而且其格式更緊密,且不留任何沒有意義的
10、空行。b = 2 3 4 5 6 7 8 9 0 disp (b) 2 3 4 5 6 7 8 9 0disp( Jan Feb Mar)disp(rand(5,3) Jan Feb Mar 0.9501 0.7621 0.6154 0.2311 0.4565 0.7919 0.6068 0.0185 0.9218 0.4860 0.8214 0.7382 0.8913 0.4447 0.1763專題四專題四 程序如下: a=input(a=?); b=input(b=?); c=input(c=?); d=b*b-4*a*c; x=(-b+sqrt(d)/(2*a), (-b-sqrt(d)
11、/(2*a) disp(x1=,num2str(x(1),x2=,num2str(x(2);例4.3 求一元二次方程ax2 +bx+c=0的根。專題四專題四 其調(diào)用格式為:其調(diào)用格式為: pause(延遲秒數(shù)延遲秒數(shù)) 如果省略延遲時(shí)間,直接使用如果省略延遲時(shí)間,直接使用pause,則將暫,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。 pause命令在程序調(diào)試以及需要看中間結(jié)果時(shí)命令在程序調(diào)試以及需要看中間結(jié)果時(shí)特別有用。特別有用。 若要強(qiáng)行中止程序的運(yùn)行可使用若要強(qiáng)行中止程序的運(yùn)行可使用Ctrl+C命令。命令。4.2.3 pause4.2.3 pau
12、se函數(shù)函數(shù)專題四專題四 4.3 選擇結(jié)構(gòu) 4.3.1 if 4.3.1 if語句語句 在在MATLABMATLAB中,中,ifif語句有語句有3 3種格式。種格式。 1.1.單分支單分支ifif語句語句 語句格式為:語句格式為: if if 條件條件 語句組語句組 endend 當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之后當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行繼續(xù)執(zhí)行if if 語句的后繼語句,若條件不成立,語句的后繼語句,若條件不成立,則直接執(zhí)行則直接執(zhí)行ifif語句的后繼語句。語句的后繼語句。 2.雙分支if語句 語句格式為: if 條件 語句組1 else 語句組2 end 當(dāng)條件成
13、立時(shí),執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。專題四專題四例4.4計(jì)算分段函數(shù)值。 程序如下: x=input(請(qǐng)輸入x的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y專題四專題四例4.5 輸入數(shù)n,判斷其奇偶性 程序如下: n = input(n=), if rem(n,2)=0 A = even else A = odd end 3.多分支多分支if語句語句語句格式為:語句格式為:if 條件條件1 語句組語句組1elseif 條件條件2 語句組語句組2 els
14、eif 條件條件m 語句組語句組melse 語句組語句組m+1end專題四專題四 例例4.6 輸入一個(gè)字符,若為大寫字母,則輸出其后繼字輸入一個(gè)字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導(dǎo)字符,若為數(shù)字字符,若為小寫字母,則輸出其前導(dǎo)字符,若為數(shù)字字符則輸出其對(duì)應(yīng)的數(shù)值,若為其他字符則原樣輸出。符則輸出其對(duì)應(yīng)的數(shù)值,若為其他字符則原樣輸出。 c=input(請(qǐng)輸入一個(gè)字符請(qǐng)輸入一個(gè)字符,s); if c=A & c=a& c=0& c0 E=E+F; F=F*X/n; n=n+1; end E expm(X) %調(diào)用調(diào)用MATLAB矩陣指數(shù)函數(shù)求矩陣
15、指矩陣指數(shù)函數(shù)求矩陣指數(shù)數(shù).!1.! 212mmeAAAIA與循環(huán)結(jié)構(gòu)相關(guān)的還有一個(gè)與循環(huán)結(jié)構(gòu)相關(guān)的還有一個(gè)break語句,當(dāng)在循環(huán)語句,當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻鲅h(huán)。該語句一體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻鲅h(huán)。該語句一般與般與if語句配合使用。語句配合使用。在多重循環(huán)中,在多重循環(huán)中,break只能使程序跳出包含它的最只能使程序跳出包含它的最內(nèi)層的那個(gè)循環(huán)內(nèi)層的那個(gè)循環(huán)專題四專題四 例例4.14 用用while語句實(shí)現(xiàn)例語句實(shí)現(xiàn)例4.10。 y=0; i=1; while 1 f=1/i/i; y=y+f; if i=100 break; end i=i+1; end專題四專題
16、四 4.4.3 循環(huán)的嵌套循環(huán)的嵌套如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套,或稱為多重循結(jié)構(gòu),就稱為循環(huán)的嵌套,或稱為多重循環(huán)結(jié)構(gòu)??梢园凑涨短讓訑?shù),分別叫做二環(huán)結(jié)構(gòu)??梢园凑涨短讓訑?shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。在設(shè)計(jì)多重循環(huán)時(shí),要特別注意內(nèi)、外循環(huán)在設(shè)計(jì)多重循環(huán)時(shí),要特別注意內(nèi)、外循環(huán)之間的關(guān)系,以及各語句放置的位置,不之間的關(guān)系,以及各語句放置的位置,不要搞錯(cuò)。要搞錯(cuò)。專題四專題四 例4.15 列出從2到
17、m的全部素?cái)?shù)。 m=input(m=); p=2:m; for i=2:sqrt(m) %依次列出最大除數(shù) n = find(rem(p,i)=0 & p=i); %找到能被 % i整除,而不等于i的數(shù)的序號(hào) p(n)= ; % 去掉該數(shù) end p % 顯示結(jié)果 over專題四專題四 4.5 函數(shù)文件函數(shù)文件 4.5.1 函數(shù)文件的基本結(jié)構(gòu) 函數(shù)文件由function語句引導(dǎo),其基本結(jié)構(gòu)為: function 輸出形參表 = 函數(shù)名(輸入形參表) 注釋說明部分 函數(shù)體語句 說明:說明:(1)關(guān)于函數(shù)文件名關(guān)于函數(shù)文件名: 函數(shù)文件名與函數(shù)名也可以函數(shù)文件名與函數(shù)名也可以不相同。當(dāng)兩者
18、不同時(shí),不相同。當(dāng)兩者不同時(shí),MATLAB將忽略函數(shù)將忽略函數(shù)名而確認(rèn)函數(shù)文件名,因此調(diào)用時(shí)使用函數(shù)文名而確認(rèn)函數(shù)文件名,因此調(diào)用時(shí)使用函數(shù)文件名。件名。(2)關(guān)于注釋說明部分。注釋說明包括三部分內(nèi)關(guān)于注釋說明部分。注釋說明包括三部分內(nèi)容:容:緊隨函數(shù)文件引導(dǎo)行之后以緊隨函數(shù)文件引導(dǎo)行之后以%開頭的第開頭的第一注釋行。一注釋行。第一注釋行及之后連續(xù)的注釋行。第一注釋行及之后連續(xù)的注釋行。與在線幫助文本相隔一空行的注釋行。與在線幫助文本相隔一空行的注釋行。 (3)關(guān)于關(guān)于return語句。執(zhí)行到該語句就結(jié)束函數(shù)語句。執(zhí)行到該語句就結(jié)束函數(shù)的執(zhí)行,程序流程轉(zhuǎn)至調(diào)用該函數(shù)的位置。通的執(zhí)行,程序流程轉(zhuǎn)
19、至調(diào)用該函數(shù)的位置。通常,在函數(shù)文件中也可不使用常,在函數(shù)文件中也可不使用return語句,這語句,這時(shí)在被調(diào)函數(shù)執(zhí)行完成后自動(dòng)返回。時(shí)在被調(diào)函數(shù)執(zhí)行完成后自動(dòng)返回。 例例4.16 編寫函數(shù)文件求半徑為編寫函數(shù)文件求半徑為r的圓的面積和周長。的圓的面積和周長。 function s,p = fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r % r 圓半徑圓半徑 % s 圓面積圓面積 % p 圓周長圓周長 %2019年年7月月30日編日編 s=pi*r*r; p=2*pi*r; 將以上函數(shù)文件以文
20、件名將以上函數(shù)文件以文件名fcircle.m存入存入c:matlab6p5work下,然后在下,然后在MATLAB命令窗命令窗口調(diào)用該函數(shù):口調(diào)用該函數(shù): s,p=fcircle(10)專題四專題四 4.5.2 函數(shù)調(diào)用 函數(shù)調(diào)用的一般格式是: 輸出實(shí)參表=函數(shù)名(輸入實(shí)參表)例4.17 利用函數(shù)文件,實(shí)現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(,)之間的轉(zhuǎn)換。 函數(shù)文件 tran.m function rho,theta = tran(x,y) rho = sqrt(x*x+y*y); theta = atan(y/x); 調(diào)用tran.m的命令文件main1.m: x=input(Please inp
21、ut x=:); y=input(Please input y=:); rho,theta=tran(x,y); rho, theta專題四專題四 例4.18 利用函數(shù)的遞歸調(diào)用,求n!。 遞歸調(diào)用函數(shù)文件factor.m: function f = factor(n)if n = Leslie; student.num = 123456; student.test=79 75 73;180 178 177.5;22 210 205; studentstudent = name: Leslie num: 123456 test: 3x3 double student(
22、2).name = David; student(2).num = 123532; student(2).test=68 70 68;118 118 119;172 170 169; 23 543 433; studentstudent = 1x2 struct array with fields: name num test fieldnames(student)ans = name num test(2) 用函數(shù)struct定義,調(diào)用格式:結(jié)構(gòu)數(shù)組名 = struct (屬性1,屬性值1,屬性2,屬性值2, ) s = struct(type,big,little,color,red,x,3 4) 2. 結(jié)構(gòu)成員的修改結(jié)構(gòu)成員的修改 str = student(2).name n = student(2).test(4,2) student(2).test(4,2) = 0 for i=1 : length (student) disp(student(i).name) end刪除屬性的命令:刪除屬性的命令: student2 = rmfield(student,test) 細(xì)胞數(shù)據(jù) 細(xì)胞Cell數(shù)據(jù)的概念與結(jié)構(gòu)有些類似,也是把不同屬性的數(shù)據(jù)放在一個(gè)變量中。所不同的是,結(jié)構(gòu)變量的各個(gè)元素下有成員,每個(gè)成員都有自己的名字,對(duì)成員的引用是:結(jié)構(gòu)變量名
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 金融會(huì)員合同范例
- 建筑石材供貨合同范例
- 填土種樹合同范例
- 購茶合同范例
- wenhua公司合伙合同范例
- 化工物流合同范例
- 2007建設(shè)工程合同范例
- 秘方產(chǎn)品購銷合同范例
- 掏井合同范例
- 租金每增加合同范例
- 屋頂光伏發(fā)電應(yīng)急預(yù)案
- 社會(huì)實(shí)踐-形考任務(wù)二-國開(CQ)-參考資料
- app隱私協(xié)議模板
- 高職高考作文【4篇】
- 超星爾雅學(xué)習(xí)通《創(chuàng)業(yè)法學(xué)(江西財(cái)經(jīng)大學(xué))》2024章節(jié)測試含答案(一)
- 2020-2021學(xué)年湖北省武漢市江漢區(qū)七年級(jí)(下)期末英語試卷(附答案詳解)
- 盾構(gòu)隧道管片生產(chǎn)施工方案
- 2023年中國軟件行業(yè)基準(zhǔn)數(shù)據(jù)SSM-BK-202310
- 華為管理法讀后感
- 南京財(cái)經(jīng)大學(xué)國際服務(wù)貿(mào)易(考試重點(diǎn))
- 玻璃生產(chǎn)工藝及裝備培訓(xùn)
評(píng)論
0/150
提交評(píng)論