版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、 Matlab程序設計 Mtatlab程序設計既有傳統(tǒng)高級語言的特征,又有自己獨特的優(yōu)點,在Matlab程序設計時,充分利用Matlab數(shù)據(jù)結(jié)構(gòu)的特點,可以使程序結(jié)構(gòu)簡單、編程效率高。本次主要介紹有關(guān)Matlab程序控制結(jié)構(gòu)以及程序設計的基本方法。nMatlab在執(zhí)行命令時,一種交互的命令執(zhí)行方式,在命令窗口逐條輸入指令,執(zhí)行時Matlab逐條解釋執(zhí)行。這種方式雖然簡單、直觀,但速度慢,執(zhí)行過程不保留,當某些操作需要反復進行時,更使人感到不便。n另一種M文件的程序執(zhí)行方式,是將有關(guān)命令變成程序存儲在一個文件中(M文件)當需要運行時,直接調(diào)用運行,運行時Matlab就自動依次執(zhí)行該文件中的命令
2、M文件一、M文件的分類通常,M文件可分為兩大類函數(shù)文件)(腳本文件M2M ) 1 (這里通過一個例題加以說明 這兩種Matlab程序代碼所編寫的文件通常都是以“.m”為擴展名,因此都統(tǒng)稱為M文件。M函數(shù)文件是Matlab的主流。Matalb本身的一系列工具箱的內(nèi)部函數(shù)就是Matlab的開發(fā)者設計的一些M函數(shù),提供給我們使用。 我們也可以根據(jù)我們的需要,開發(fā)設計我們自己需要M函數(shù)36300sin)(xxxxxxxy在區(qū)間-6,6中的圖形例: 用matlab編寫一M文件和M函數(shù)繪制以下函數(shù)圖形x=-6:0.1:6;leng=length(x);for m=1:leng; if x(m)=0 y(m
3、)=sin(x(m); elseif x(m)=3 y(m)=x(m); else y(m)=-x(m)+6; endendplot(x,y);grid用M文件形式編寫程序36300sin)(xxxxxxxyx=-6:0.1:6;leng=length(x);y=;for m=1:leng; if x(m)=0 y=y,sin(x(m); elseif x(m)=3 y=y,x(m); else y=y,-x(m)+6; endendplot(x,y);grid方法三:運用邏輯運算符簡化程序x=-6:0.1:6;y=(x=0&x3).*(-x+6);plot(x,y),grid on M函數(shù)的
4、形式編寫程序function y=f1(x)leng=length(x);for m=1:leng if x(m)=0 y(m)=sin(x(m); elseif x(m)=3 y(m)=x(m); else y(m)=-x(m)+6 endendfunction y=f2(x)y=(x=0&x3).*(-x+6);plot(x,y),gridx=-6:0.1:6;y=f1(x); %自動調(diào)用f1.mplot(x,y);grid 編寫好該程序,保存時Matlab自動以f1為函數(shù)名存入內(nèi)存。當需要運行該程序時在Matlab命令窗口輸入f1(x)就行 程序控制結(jié)構(gòu)Matlab的程序控制結(jié)構(gòu)有3種:
5、順序結(jié)構(gòu);選擇結(jié)構(gòu);循環(huán)結(jié)構(gòu)。任何復雜的程序都可以有著3種基本結(jié)構(gòu)構(gòu)成。復雜的程序可以在循環(huán)結(jié)構(gòu)中采用: 循環(huán)的嵌套一、順序結(jié)構(gòu) 順序結(jié)構(gòu)是指按照程序中語句的排列順序依次執(zhí)行,直到程序的最后一個語句。這也是最簡單的一種程序結(jié)構(gòu)。一般涉及數(shù)據(jù)的輸入、數(shù)據(jù)的計算或處理、數(shù)據(jù)的輸出等內(nèi)容。1、數(shù)據(jù)的輸入從鍵盤輸入數(shù)據(jù),則可使用input函數(shù)來實現(xiàn),其格式: A=input(提示信息,選項);其中:提示信息-為字符串,用于提示用戶 輸入什么樣的數(shù)據(jù) A=input(輸入A矩陣:) %提示輸入A矩陣2、數(shù)據(jù)的輸出 Matlab提供的命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為:disp(輸出項)其中
6、:輸出項-既可以是字符串、也 可以是矩陣例如: A=Good afternoon everyone. ; disp(A)輸出結(jié)果:Good afternoon everyone. 例如:A=1 2 3;4 5 6;7 8 9; disp(A)輸出結(jié)果: 1 2 3 4 5 6 7 8 9例:求解一元二次方程02cbxaxa=input(a=);b=input(b=);c=input(c=);d=b2-a*4*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2)a=4b=78c=54x1=-0
7、.7188 x2=-18.7812輸出結(jié)果:a=23b=-6c=51x1=0.13043+1.4834i x2=0.13043-1.4834iMatlab中程序暫停函數(shù)的調(diào)用格式pause(延時秒數(shù)) 若省去延時秒數(shù),直到用戶按任意鍵程序繼續(xù)執(zhí)行,按Ctrl+C強行中止程序的執(zhí)行2、選擇結(jié)構(gòu) 選擇結(jié)構(gòu)是根據(jù)給定條件成立或不成立,分別執(zhí)行不同的語句。Matlab中用于選擇結(jié)構(gòu)的語句有if語句;switch語句;try語句。1)if語句Matlab中,if語句有3種格式格式:if 條件 語句組 end 單分支if語句 雙分支if語句格式:if 條件 語句組1 else 語句組2 end 多分支if
8、語句格式:if 條件1 語句組1 elseif 條件2 語句組2 elseif 條件m 語句組m else 語句組n end條件1條件2條件m語句組1語句組2語句組m語句組n成立成立成立不成立不成立不成立多分支if語句的執(zhí)行過程結(jié)構(gòu)框圖例如:計算分段函數(shù)10 10 1) 1cos(2xxxxxxxy運用單分支if語句編程x=input(請輸入X的值:); y=cos(x+1)+sqrt(x*x+1); if x=10 y=x*sqrt(x+sqrt(x);endy運用雙分支if語句編程x=input(請輸入X的值:);if x=10 y=cos(x+1)+sqrt(x*x+1); else y
9、=x*sqrt(x+sqrt(x);endyx=input(請輸入X的值:);if x=10 y=x*sqrt(x+sqrt(x);else y=cos(x+1)+sqrt(x*x+1); endy2)switch語句 switch語句是根據(jù)表達式的取值不同,分別執(zhí)行不同的語句,其語句格式:格式:格式: switch switch 表達式表達式 case case 表達式表達式1 1 語句組語句組1 1 case case 表達式表達式2 2 語句組語句組2 2 case case 表達式表達式m m 語句組語句組m m otherwiseotherwise 語句組語句組n n end end
10、 求表達式的值K=值1K=值2K=值m語句組1語句組2語句組m語句組nswicth語句的下一句否否否是是是Switch語句的執(zhí)行過程例:某商場對顧客所購買的商品實行打折銷售,標準如下(商品價格用price)折扣折扣折扣折扣折扣沒有折扣14% price500010% 5000price25008% 2500price10005% 1000price5003% 500price200 200priceprice=input(請輸入商品價格:)switch fix(price/100) %也可以用floor或ceil case 0,1 %商品價格小于200 rate=0; case2,3,4 %商
11、品價格大于200小于500 rate=3/100; case num2cell(5:9) %商品價格大于500小于1000 rate=5/100; case num2cell(10:24) %商品價格大于1000小于2500 rate=8/100; case num2cell(25:49) %商品價格大于2500小于5000 rate=10/100; otherwise %商品價格大于等于5000 rate=14/100; end price=price*(1-rate) %輸出商品實際價格 3)try語句try語句是一種試探性執(zhí)行語句,其語句格式:try 語句組1catch 語句組2end
12、try語句先試探執(zhí)行語句組1,如果語句組1在執(zhí)行多程中出現(xiàn)錯誤,則將保留的Lasterr變量,并轉(zhuǎn)去執(zhí)行語句2。例如:矩陣乘法要求兩矩陣的位數(shù)相等,否則出錯A=1 2 3;4 5 6; B=7 8 9;10 11 12;try C=A*B; catch C=A.*B;end ClasterrMatlab程序C = 7 16 27 40 55 72ans =Error using = mtimesInner matrix dimensions must agree.輸出結(jié)果2、循環(huán)結(jié)構(gòu) 循環(huán)是指按照給定的條件,重復執(zhí)行指定的語句,這是十分重要的一種程序結(jié)構(gòu)。Matlab提供了兩種實現(xiàn)循環(huán)的結(jié)構(gòu)語
13、句 for語句;while語句 For語句(步長的默認值為1)格式: for 循環(huán)變量=循環(huán)初值:步長:終值 循環(huán)體語句 end分別求循環(huán)的初值、步長、終值將循環(huán)的初值賦給循環(huán)變量ii在是否在初值和終值之間循環(huán)體語句i增加1個步長是否例如:一個3位整數(shù),其各位數(shù)字的立方和等于該數(shù)本身則稱為水仙花數(shù),求出100999之間的全部水仙花數(shù)。for m=100:999; m1=fix(m/100); %求m的百位數(shù)字,fix向零方向取整P30 m2=rem(fix(m/10),10); %求m的十位數(shù)字 m3=rem(m,10); %求m的個位數(shù)字 if m=m1*m1*m1+m2*m2*m2+m3*
14、m3*m3 disp(m) endendMatlab程序 例:求1+3+5+100的值% 數(shù)組求和sm=0;for n=1:2:100; sm=sm+n;endSm;程序分析:循環(huán)變量為n,n對應為向量1:2:100,循環(huán)次數(shù)為向量1:2:100的列數(shù),每次循環(huán)n取一個元素%用Matlab函數(shù)求和x=1:2:100s=sum(x)while語句格式:while (條件) 循環(huán)體語句 end條件循環(huán)體語句不成立成立循環(huán)過程圖例如:從鍵盤輸入若干個數(shù),當輸入0時結(jié)束運算,求這些數(shù)的平均值和它們的和Matlab程序 sm=0;n=0;x=input(輸入一個數(shù)(以0結(jié)束):);while(x=0)
15、sm=sm+x; n=n+1; x=input (輸入一個數(shù)(以0結(jié)束):);endif (n0) sm mean=sm/nend 例:利用while循環(huán),求1+3+5+100的值% 利用while循環(huán)求1+3+5+100的值 sm=0;n=1;while n=100 sm=sm+n; n=n+2;endMatlab程序程序分析:可見whileend循環(huán)的循環(huán)次數(shù)由表達式來決定,當n=101時停止循環(huán)3、流程控制語句在程序執(zhí)行中,有一些可以控制程序流程的命令,下面主要介紹 breakbreak continuecontinue return return pause pause keyboar
16、d keyboard input input break語句 break語句用于終止for循環(huán)和while循環(huán)的執(zhí)行。當遇到break時,則退出循環(huán)體,繼續(xù)執(zhí)行循環(huán)體外的下一個語句。在嵌套循環(huán)中,break往往存在于內(nèi)層的循環(huán)中例:用if與break命令結(jié)合,停止while循環(huán),計算1+3+5+100的值,當和大于1000時終止計算% 用break終止while循環(huán)sm=0;n=1;while n=100 if sm whos Name Size Bytes Class t 1x201 1608 double array (global)Grand total is 201 elements
17、using 1608 bytes 函數(shù)參數(shù) Matlab的函數(shù)調(diào)用過程實際上就是參數(shù)傳遞的過程。 1、函數(shù)調(diào)用格式輸出參數(shù)1,輸出參數(shù)2,=函數(shù)名(輸入?yún)?shù)1,輸入?yún)?shù)2,)2、參數(shù)傳遞的規(guī)則 在Matlab中,函數(shù)具有自己的工作空間,函數(shù)內(nèi)變量與外界(包括其他函數(shù)和工作空間)的唯一聯(lián)系就是通過函數(shù)的輸入、輸出參數(shù),輸入?yún)?shù)在函數(shù)中的任何變化,都僅在函數(shù)內(nèi)進行,不會傳遞出去。function E1()% 參數(shù)傳遞繪制二階系統(tǒng)時域響應z1=0.3;t1 y1=E2(z1);plot(t1,y1)hold onz1=0.5;t2 y2=E2(z1);plot(t2,y2)z1=0.707;t3 y3=E2(z1);plot(t3,y3)function t,y=E2(zeta)%子函數(shù),繪制二階系統(tǒng)時域響應曲線t=0:0.1:20;y=1-1/sqrt(1-zeta2)*exp(-zeta*t).*sin(sqrt(1-zeta2)*t+acos(zeta);
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025護理學院學生工作計劃樣文
- 幼兒中班教師工作計劃范文模板
- 吳建旭“互聯(lián)網(wǎng)+”大學生創(chuàng)新創(chuàng)業(yè)大賽項目計劃書
- 2025白酒銷售月工作計劃范文
- 切實加強行風建設努力做好計劃生育工作的講話
- 城管科科長述職報告總結(jié)計劃
- 2025關(guān)于小學班主任工作計劃
- 《機械制圖與CAD含習題集》課件-第5章3
- 合伙種植沃柑合同模板
- 鐵路客運合同案例簡短
- 中醫(yī)內(nèi)科學課件-癲狂
- 分享會之蹲馬步管理工坊
- 水土保持監(jiān)理實施細則
- 第9課小測-2023-2024學年初中日語人教版第三冊(含答案)
- 2023年諸暨市重點高中提前招生選拔考試科學試卷
- 學術(shù)規(guī)范與學術(shù)倫理學習通超星課后章節(jié)答案期末考試題庫2023年
- 部編版三年級上冊道德與法治期末測試卷(全優(yōu))
- 2022年北京語言大學教師招聘考試真題
- 不良資產(chǎn)清收處置手段及流程
- 管道重量計算、彎頭、天圓地方重量
評論
0/150
提交評論