版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
回顧:基礎(chǔ)知識5/14/2023矩陣生成基本運算矩陣運算多項式解方程繪圖命令還記得哪些常用命令?表1-3字符串符號和曲線線型、色彩及坐標(biāo)點型狀對照表曲線線型曲線色彩坐標(biāo)點型狀線型符號含義色彩符號含義點型狀符號含義-實線b藍(lán)色.點--虛線c青色o圓:點線g綠色*星號-.點劃線k黑色+加號x叉號m深紅色s方塊r紅色d菱形y黃色p五角星w白色h六角星5/14/2023
表1-4常用圖形標(biāo)識命令及其含義圖形標(biāo)識命令含義title給出全圖標(biāo)注的標(biāo)題xlabel對x軸標(biāo)注名稱ylabel對y軸標(biāo)注名稱text通過程序在圖形的指定位置放入文本字符串gtext單擊鼠標(biāo)指定位置放入文本字符串legend在圖形中添加注解grid打開或關(guān)閉柵格axis坐標(biāo)軸調(diào)整hold圖形保持zoom圖形縮放5/14/2023
其他繪圖指令特殊圖形繪制命令函數(shù)命令功能函數(shù)命令功能area填充區(qū)域圖hist繪制累計圖bar繪制直方圖stairs繪制階梯圖compass繪制復(fù)數(shù)矢量圖stem繪制針狀圖comet繪制慧星曲線圖pie繪制餅圖feather繪制羽毛圖quiver繪制向量場圖fill填充顏色rose繪制極坐標(biāo)累計圖5/14/2023
三維繪圖指令常用三維繪圖函數(shù)命令函數(shù)命令功能函數(shù)命令功能Plot3繪制三維曲線Bar3繪制三維直方圖mesh繪制三維網(wǎng)線Pie3繪制三維餅圖surf繪制三維曲面Stem3繪制三維離散針狀圖Colormap(RGB)繪制三維圖形裝飾pie繪制餅圖view圖形視覺角度Contour3繪制三維等高線圖cylinder繪制柱面圖meshc繪制三維含等高線網(wǎng)線圖5/14/2023
第2講Matlab程序設(shè)計及仿真目標(biāo)與要求:學(xué)生了解M文件和函數(shù)的基本概念,掌握程序設(shè)計的基本原則,能夠?qū)atlab的M文件進(jìn)行流程控制,能夠進(jìn)行面向?qū)ο蟮木幊?,并且對M文件能夠調(diào)試與剖析。教學(xué)內(nèi)容:1M文件;2函數(shù);3Matlab程序設(shè)計基本原則;4流程控制;5文件調(diào)試與剖析。5/14/2023
1.M文件——腳本文件概述MATLAB語言的程序可以有兩種方式來執(zhí)行,即命令行方式和m文件方式。由于MATLAB語言的文件,以“.m”作擴展名,因此均稱為m文件。M文件可分為函數(shù)程序和腳本程序兩種:函數(shù)程序可以接受輸入?yún)?shù),并可以產(chǎn)生輸出;腳本程序是MatLab表達(dá)式的集合,不可以接受參數(shù)。
腳本文件是一種簡單的M文件,它沒有輸入?yún)?shù);可以是一系列在命令行中執(zhí)行命令的集合,也可以是操作工作空間中的變量和程序中新建的變量。腳本程序在工作空間創(chuàng)建的變量,在程序運行結(jié)束后仍然可以使用。M腳本文件既不需要預(yù)先定義,也不需要接受輸入變量,而是直接輸入變量名,腳本程序就會按順序執(zhí)行命令。5/14/2023
1.M文件——腳本文件編寫腳本文件編寫步驟:第一步單擊MatLab指令窗口工具條上的NewFile圖標(biāo)或者【file】菜單下new子菜單中的M-file,如下圖所示。打開如圖2-2所示的MatLab文件編輯調(diào)試器MatlabEditor/Debugger。其窗口名默認(rèn)為Untitled,用戶可在空白窗口中編寫程序。5/14/2023
1.M文件——腳本文件編寫針對所給分段函數(shù),輸入如下一段程序:a=2;b=2;clf;%clf函數(shù)用于清除當(dāng)前圖像窗口x=-a:0.2:a;y=-b:0.2:b;fori=1:length(y)forj=1:length(x)ifx(j)+y(j)>1z(i,j)=0.85*exp(-0.5*y(i)^2-3.75*x(j)^2-1.5*x(i));elseifx(j)+y(j)<-1z(i,j)=0.546*exp(-0.75*y(i)^2-3.75*x(j)^2+1.5*x(i));elsez(i,j)=0.97*exp(-y(i)^2-6*x(j)^2);endendendaxis([-a,a,-b,b,min(min(z)),max(max(z))]);surf(x,y,z);title('編寫腳文文件示例');5/14/2023
1.M文件——腳本文件運行第二步單擊編輯調(diào)試器中的保存圖標(biāo),或者通過【file】菜單下的Saveas將文件另存他處,鍵入文件名(如example21),單擊【保存】鍵,就完成了文件保存。第一步將保存example21.m文件所在目錄成為當(dāng)前目錄,或者讓目錄處在MatLab的搜索路徑上。第二步在命令窗口,輸入example21,運行結(jié)果如下圖所示。運行腳本文件:5/14/2023
1.M文件與M函數(shù)——腳本文件結(jié)論1)在M-file窗口中編寫腳本文件,并且每行必須以分號“;”結(jié)束;2)將已編寫完成的M-file保存在某一文件夾中,并且使Matlab的搜索路徑指向該M-file所在的文件夾;3)給M-file命名,文件不能使用漢語命名,必以字母或下劃線開始的文件名;4)文件名需要能夠反映出該M-file的功能和作用,并且容易記憶;5)運行M-file時,只需在命令窗口中輸入M-file的文件名即可。通過上述例子可得如下結(jié)論:5/14/2023
1.M文件與M函數(shù)——腳本文件舉例【舉例】執(zhí)行文件的建立與執(zhí)行。顯示建立的執(zhí)行文件第一步在腳本文件編輯器中輸入左邊程序,并存儲命名為exam02.m。5/14/2023
1.M文件與M函數(shù)——腳本文件舉例第二步在Matlab平臺上識別和執(zhí)行文件exam02.m,在命令窗口中輸入examo2.m。輸入命令顯示輸出圖線顯示5/14/2023
1.M文件與M函數(shù)——M函數(shù)定義不同于獨立m文件,m函數(shù)形式的m文件書寫格式為:函數(shù)名定義
function[A1,A2…]=myfuction(a1,a2,…)%注釋行主程序體
例如:function[y,y1,y2]=exam03(x)M函數(shù)的定義5/14/2023
1.M文件與M函數(shù)——M函數(shù)格式說明(1)第一行為m函數(shù)格式行。function為m函數(shù)的保留字,myfunction為m函數(shù)名稱,(a1,a2,…)為外部傳遞參數(shù)組,[A1,A2…]為返回參數(shù)組。(2)首字符為“%”的各行是注釋行。緊接格式行的各注釋行可以響應(yīng)help命令在MATLAB平臺上印出,加空行后的注釋行不響應(yīng)help命令,注釋行可以在m函數(shù)描述行的任意位置均可。(3)主程序體各行,是m函數(shù)的各執(zhí)行行。
5/14/2023
1.M文件與M函數(shù)——M函數(shù)的調(diào)用M函數(shù)調(diào)用格式如下:輸出變量=函數(shù)名(輸入變量)示列如下:>>x=5;Ra=circle(x)(函數(shù)調(diào)用)5/14/2023
1.M文件與M函數(shù)——M函數(shù)調(diào)用的注意點注意以下幾點:1)M函數(shù)名要與M函數(shù)存儲的文件名相同;2)當(dāng)一個M函數(shù)內(nèi)含有多個函數(shù)時,函數(shù)內(nèi)第一個function為主函數(shù),其它函數(shù)是主函數(shù)局部調(diào)用函數(shù),文件名以主函數(shù)名命名;3)注釋語句前需以“%”開始,若需要多行注釋語句,每行都以“%”開始;4)M函數(shù)內(nèi)除了注釋說明語句行,最上面的第一行語句必須以function開始;5)程序語句包括調(diào)用函數(shù)、注程控制語句和賦值語句等;6)M函數(shù)調(diào)用時,調(diào)用函數(shù)的輸入/輸出變量可以與定義函數(shù)的輸入/輸出變量不同。5/14/2023
1.M文件與M函數(shù)——M函數(shù)程序函數(shù)程序可以接受輸入?yún)?shù),并可以返回輸出參數(shù)。同時也可操作函數(shù)工作空間的變量。例如:通過M函數(shù)文件畫圓functionRa=circle(r,s)%r指定半徑的數(shù)值%s指定線色的字符串%sa指圓面積%circle(r)利用藍(lán)實線畫半徑為r的圓周線%circle(r,s)利用s字符串指定的線色畫半徑為r的圓周線%sa=circle(r)計算圓面積,并畫半徑為r的藍(lán)色圓面%sa=circle(r,s)計算圓面積,并畫半徑為r的s色圓面clf;t=0:pi/200:2*pi;x=r*exp(i*t);Ra=pi*r*r;fill(real(x),imag(x),s)axis('square')title('M函數(shù)程序——畫圓示例')5/14/2023
1.M文件與M函數(shù)——全局變量和局部變量
M函數(shù)運行時,所有變量都被加載于函數(shù)工作空間,而且對于多個函數(shù)運行時,這些函數(shù)的工作空間是相互獨立的,其變量也不會加載于MatLab的工作空間,當(dāng)函數(shù)運行結(jié)束后,所有的變量自動消失,這些變量稱為局部變量。不過用戶有時需要使用全局變量,便于函數(shù)之間的變量共用,此時需要使用Matlab里面的global命令對變量進(jìn)行全局變量定義。局部變量:具有函數(shù)內(nèi)部作用范圍全局變量:可在幾個函數(shù)和基本工作空間之間共享,具有全局作用范圍全局變量的聲明:global變量名1變量名2…
變量名間用空格分離。全局變量在使用前必須在MATLAB工作空間中申明,而在某個具體的MATLAB函數(shù)中如果想用到該全局變量時,也必須在函數(shù)中申明。由于全局變量損害函數(shù)的封閉性,因此不提倡使用全局變量。5/14/2023
1.M文件與M函數(shù)——M函數(shù)程序第二步運行以下命令,結(jié)果如下圖所示。>>Ra=circle(3,'r')Ra=28.2743。5/14/2023
2.函數(shù)——函數(shù)定義把相關(guān)語句組合在一起,并給它們注明相應(yīng)的名稱,利用這種方法把程序分塊,這種形式的組合就稱為函數(shù)。函數(shù)通常也稱為例程或過程。函數(shù)的使用通常是通過函數(shù)調(diào)用來實現(xiàn)的。對于用戶自定義的函數(shù)也可以有子函數(shù)。這些子函數(shù)只能被與M文件同名的主函數(shù)或者在M文件的其他函數(shù)所調(diào)用。5/14/2023
2.函數(shù)——子函數(shù)一個M文件只能有一個主函數(shù)。文件main.m中有一個函數(shù)結(jié)構(gòu)及其子函數(shù),示例如下:Functionf=main(x)%主函數(shù)……%程序語句Y1=funexample1(x)%調(diào)用第一個子函數(shù)……%程序語句f=funexample2(x)%調(diào)用第二個子函數(shù)……%程序語句Functionf=funexample1(x)%定義第一個子函數(shù)……%程序語句Functionf=funexample2(x)%定義第二個子函數(shù)……%程序語句[b,d]=funexample3(x1,x2)%子函數(shù)中另外再調(diào)用第三個子函數(shù)(函數(shù)嵌套)……%程序語句Function[b,d]=funexample3(x1,x2)%定義第三個子函數(shù)……%程序語句5/14/2023
2.函數(shù)——私有函數(shù)私有函數(shù)是放入一個叫private子目錄中的M文件,私有函數(shù)只能private直接上層目錄中的函數(shù)調(diào)用。當(dāng)Matlab調(diào)用M文件中的函數(shù)時,首先查找子函數(shù),再查找私有函數(shù),最后再在Matlab的搜索路徑中查找函數(shù)。這就意味著用戶可以創(chuàng)建與Matlab函數(shù)同名的私有函數(shù),并將其放入private子目錄中,這樣程序就能對它們進(jìn)行調(diào)用。同時其他路徑下的程序能調(diào)用和私有函數(shù)同名的M文件,但此時執(zhí)行的是Matlab的函數(shù)。5/14/2023
3.M文件程序設(shè)計的基本原則為了便于廣大讀者熟練地使用MatLab軟件進(jìn)行程序設(shè)計,并且形成良好的編程習(xí)慣,在此將程序設(shè)計的基本原則簡述如下:1)Matlab程序的基本組成。(1)%表示命令行注釋;(2)采用clear、close命令清除工作空間變量;(3)定義變量,設(shè)置初始值;(4)編寫運算指令、調(diào)用函數(shù)或調(diào)用子程序;(5)使用流程控制語句;(6)直接在指令窗口中顯示運算結(jié)果或者通過繪圖命令顯示運算結(jié)果。2)一般情況下,主程序開頭習(xí)慣使用clear命令清除工作空間變量,然而子程序開頭不要使用clear。3)程序命名盡量清晰(從程序名就可知道該程序的功能),便于日后維護(hù)。初始值盡量放在程序的前面,便于更改和查看。4)如果初始值較長或者較常用,可以通過編寫子程序?qū)⑺械某跏贾颠M(jìn)行存儲,以便調(diào)用。5)對于較大的程序設(shè)計,盡量將程序分解成每個具有獨立功能的子程序,然后采用主程序調(diào)用子程序的方法進(jìn)行編程。5/14/2023
4.流程控制與面向?qū)ο缶幊獭樞蚪Y(jié)構(gòu)Matlab程序語句結(jié)構(gòu):順序、條件、循環(huán)、試探順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),用戶在編寫好程序之后,系統(tǒng)將按照程序的物理位置順次執(zhí)行。順序結(jié)構(gòu)就是依照順序執(zhí)行程序的各條語句。語句在程序文件中的位置反映了程序的執(zhí)行順序。示例:求正弦函數(shù)的圖像。
x=-2*pi:pi/20:2*pi;
y=sin(x);
plot(x,y);
title('Plotofsin(x)vsx');1)順序結(jié)構(gòu)定義格式5/14/2023
4.流程控制與面向?qū)ο缶幊獭獥l件結(jié)構(gòu)12)if-else-end結(jié)構(gòu)定義格式if—else—end語句有3種形式if表達(dá)式執(zhí)行語句
endif表達(dá)式———
是語句1else————
否語句2endif表達(dá)式1
語句1elseif表達(dá)式2
語句2elseif表達(dá)式3
語句3···
else
語句nend第3種結(jié)構(gòu)實現(xiàn)了一種多路選擇,比較復(fù)雜??商娲话愀呒壵Z言中的switch-case-end語句。5/14/2023
4.流程控制與面向?qū)ο缶幊獭獥l件結(jié)構(gòu)舉例1
c=input('請輸入一個字符','s');ifc>='A'&c<='Z'disp(setstr(abs(c)+1));elseifc>='a'&c<='z'disp(setstr(abs(c)-1));elseifc>='0'&c<='9'disp(abs(c)-abs('0'));elsedisp(c);end
舉例:輸入一個字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導(dǎo)字符,若為數(shù)字字符則輸出其對應(yīng)的數(shù)值,若為其他字符則原樣輸出。5/14/2023
4.流程控制與面向?qū)ο缶幊獭獥l件結(jié)構(gòu)23)Switch-case-end結(jié)構(gòu)定義格式switch開關(guān)表達(dá)式case表達(dá)式1
語句段1
case表達(dá)式2
語句段2...otherwise
語句段n
end
說明:1)將開關(guān)表達(dá)式依次與case后面的表達(dá)式進(jìn)行比較,如果表達(dá)式1不滿足,則與下一個表達(dá)式2比較,如果都不滿足則執(zhí)行otherwise后面的語句段n;一旦開關(guān)表達(dá)式與某個表達(dá)式相等,則執(zhí)行其后面的語句段。2)開關(guān)表達(dá)式只能是標(biāo)量或字符串。3)case后面的表達(dá)式可以是標(biāo)量、字符串或單元數(shù)組,如果是單元數(shù)組則將開關(guān)表達(dá)式與單元數(shù)組的所有元素進(jìn)行比較,只要某個元素與開關(guān)表達(dá)式相等,就執(zhí)行其后的語句段。5/14/2023
4.流程控制與面向?qū)ο缶幊獭獥l件結(jié)構(gòu)舉例2method='Bilinear';switchlower(method)%將字符串轉(zhuǎn)換為小寫case{'linear','bilinear'}disp('Methodislinear')%顯示case'cubic'disp('Methodiscubic')case'nearest'disp('Methodisnearest')otherwisedisp('Unknownmethod.')end5/14/2023
4.流程控制與面向?qū)ο缶幊獭h(huán)結(jié)構(gòu)14)For-end循環(huán)結(jié)構(gòu)首先計算三個表達(dá)式的值,再將表達(dá)式1的值賦給循環(huán)變量,如果此時循環(huán)變量的值介于表達(dá)式1和表達(dá)式3的值之間,則執(zhí)行循環(huán)體語句,否則結(jié)束循環(huán)的執(zhí)行。執(zhí)行完一次循環(huán)之后,循環(huán)變量自增一個表達(dá)式2的值,
然后再判斷循環(huán)變量的值是否介于表達(dá)式1和表達(dá)式3之間,如果滿足仍然執(zhí)行循環(huán)體,直至不滿足為止。這時將結(jié)束for語句的執(zhí)行,而繼續(xù)執(zhí)行for語句后面的語句。for循環(huán)變量=初始值first(也可是表達(dá)式1):步長incr(表達(dá)式2):終值last(表達(dá)式3)執(zhí)行語句塊end5/14/2023
4.流程控制與面向?qū)ο缶幊獭h(huán)結(jié)構(gòu)1舉例舉例:求定積分程序如下:
a=0;b=2*pi;n=1000;h=(b-a)/n;x=a:h:b;f=exp(-0.5*x).*sin(x+pi/6);fori=1:ns(i)=(f(i)+f(i+1))*h/2;ends=sum(s)
事實上,MATLAB提供了有關(guān)數(shù)值積分的標(biāo)準(zhǔn)函數(shù),實際應(yīng)用中可直接調(diào)用這些函數(shù)求數(shù)值積分。5/14/2023
4.流程控制與面向?qū)ο缶幊獭h(huán)結(jié)構(gòu)25)While-end循環(huán)結(jié)構(gòu)while語句的一般格式為:
while(條件)
循環(huán)體語句塊
end其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。5/14/2023
4.流程控制與面向?qū)ο缶幊獭h(huán)結(jié)構(gòu)2舉例舉例:用while循環(huán)求1~100間整數(shù)的和。sum=0;i=1;whilei<=100sum=sum+i;i=i+1;endsum=5050
5/14/2023
4.流程控制與面向?qū)ο缶幊獭囂浇Y(jié)構(gòu)6)試探結(jié)構(gòu)定義語句格式為:try
語句組1catch
語句組2end說明:try語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息保留,并轉(zhuǎn)去執(zhí)行語句組2。這種試探性執(zhí)行語句是其他高級語言所沒有的。5/14/2023
4.流程控制與面向?qū)ο缶幊獭囂浇Y(jié)構(gòu)舉例:矩陣乘法運算要求兩矩陣的維數(shù)相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉(zhuǎn)去求兩矩陣的點乘。程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endC=716274055725/14/2023
5.文件調(diào)試與剖析——文件調(diào)試概述一般來說,應(yīng)用程序的錯誤有兩類:一類是語法錯誤,語法錯誤包括詞法或文法的錯誤,例如函數(shù)名的拼寫錯、表達(dá)式書寫錯等。另一類是運行時的錯誤。指程序的運行結(jié)果有錯誤,這類錯誤也稱為程序邏輯錯誤。在包含函數(shù)調(diào)用的MATLAB程序運行時,當(dāng)發(fā)生運行錯誤時,不會顯示出錯信息,而在執(zhí)行結(jié)束或出錯時,我們只能看到基本工作空間(即主程序執(zhí)行空間)中的變量,各個函數(shù)工作空間已關(guān)閉,因此無法檢測各個局部變量。為此,應(yīng)采用調(diào)試技術(shù)來查找問題。5/14/2023
5.文件調(diào)試與剖析
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 某著名企業(yè)五局天津項目鋁合金模板應(yīng)用案例分享
- 某著名企業(yè)競爭戰(zhàn)略與管理提升咨詢項目建議書-正略鈞策1011
- 《GB-T 40037-2021電子商務(wù)產(chǎn)品信息描述 大宗商品》專題研究報告
- 《GB-T 22114-2021牙膏用保濕劑 甘油和聚乙二醇》專題研究報告
- 《GBT 17999.6-2008 SPF雞 微生物學(xué)監(jiān)測 第6部分:SPF雞 酶聯(lián)免疫吸附試驗》專題研究報告
- 《FZT 64068-2019拒油防污機織粘合襯》專題研究報告深度
- 道路安全培訓(xùn)內(nèi)容記錄課件
- 道墟街道安全培訓(xùn)教育課件
- 2024胸骨捆扎固定系統(tǒng)注冊審查指導(dǎo)原則
- 返鄉(xiāng)下鄉(xiāng)創(chuàng)業(yè)培訓(xùn)課件
- 車位包銷合同協(xié)議模板
- 《FPC材料介紹》課件
- 員工轉(zhuǎn)崗協(xié)議書范本
- 四川省遂寧市射洪縣九年級2024-2025學(xué)年(上)期末化學(xué)試卷(含答案)
- 2025-2030中國器官芯片行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 醫(yī)院醫(yī)療保險費用審核制度
- 村衛(wèi)生室醫(yī)療質(zhì)量相關(guān)管理制度
- 非遺傳承人激勵機制探索-深度研究
- 中小學(xué)校園中匹克球推廣策略與實踐研究
- 2024年世界職業(yè)院校技能大賽高職組“體育活動設(shè)計與實施組”賽項考試題庫(含答案)
- 高中地理選擇性必修一(湘教版)期末檢測卷02(原卷版)
評論
0/150
提交評論