Matlab基礎(chǔ)及應(yīng)用實驗指導(dǎo)書_第1頁
Matlab基礎(chǔ)及應(yīng)用實驗指導(dǎo)書_第2頁
Matlab基礎(chǔ)及應(yīng)用實驗指導(dǎo)書_第3頁
Matlab基礎(chǔ)及應(yīng)用實驗指導(dǎo)書_第4頁
Matlab基礎(chǔ)及應(yīng)用實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Matlab 基礎(chǔ)及應(yīng)用實驗指導(dǎo)書實驗一 Matlab的基本操作實驗?zāi)康模赫莆誐atlab的基本操作方法實驗內(nèi)容:1、使用變量與基本運算;2、向量與矩陣的處理;3、程序流程控制;4、M 文件編輯 。參照教材相關(guān)內(nèi)容向量生成:x=linspace(0,2*pi);y=sin(x);plot(x,y)plot(x,sin(x),'o',x,cos(x),'x',x,sin(x)+cos(x),'*');數(shù)據(jù)導(dǎo)入1.        菜單FileImportData,支持Excel、t

2、xt等;2.        在Workspace窗口中雙擊數(shù)據(jù)表名,在Array Editor中將數(shù)據(jù)復(fù)制進去即可。 繪圖1          將數(shù)據(jù)表的各列數(shù)值分別賦予變量x、y、z等,格式如下:x=sheetname(:,1), y=sheetname(:,2), z=sheetname(:,3);2          用命令plot

3、(x,y,XXXX)繪制圖形,單引號中的符號表示點線的屬性,如線形、顏色、點的形狀等,若用雙對數(shù)坐標畫圖則命令為loglog(x,y);3          在彈出的繪圖界面中用菜單ViewProperty Editor編輯圖形屬性,如字體大小、數(shù)據(jù)點形狀、橫縱坐標名稱、繪圖區(qū)域顏色等;4          繪圖方法2:在數(shù)組編輯器上點擊Plot Selection按鈕,選擇圖形的類型即可;5  

4、        繪圖方法3:菜單FileNewFigure創(chuàng)建新的圖形,在圖形編輯器中Figure Palette面板點擊2D Axes,點擊右下角Add Data選擇圖表類型和坐標軸的數(shù)據(jù)源,度分布圖將坐標軸由線形改為對數(shù)即可。6          hold on/off命令:疊繪命令,切換繪圖的保持功能;7          繪制雙縱軸:7.1

5、         plotyy(x1,y1,x2,y2):分別用左/右側(cè)y軸表示兩條曲線;7.2         plotyy(x1,y1,x2,y2,FUN):FUN是字符串格式,用來指定繪圖的函數(shù)名,可以由多個。8          創(chuàng)建子圖:subplot(m,n,p):表示將繪圖區(qū)域分為m*n個矩形塊,分別創(chuàng)建坐標系,如>>su

6、bplot(1,2,1);loglog(x,y);>>subplot(1,2,2);loglog(m,n);表示在圖形中創(chuàng)建兩個子圖,左右排列,分別繪制雙對數(shù)坐標圖,變量分別是x、y和m、n。 曲線擬合1.        簡單擬合:圖形編輯器中菜單ToolsBasic Fitting,選擇擬合函數(shù),點擊右下方的向右箭頭可顯示擬合曲線的方程;2.        擬合工具:StartToolboxesCurve FittingCurve

7、Fitting Tool,上方的一排按鈕中Data用于選擇數(shù)據(jù)源,F(xiàn)itting用于擬合(先點New Fit,然后選擇擬合曲線,如果沒有的話可以選Custom Equations,點擊右邊的New equation按鈕,在彈出的對話框中輸入想要擬合的曲線方程,選好后點擊Apply即可,下方的Results中顯示擬合結(jié)果,包括公式和R2),Exclude用于定制排除策略,Plotting用于選擇繪圖的數(shù)據(jù),Analysis分析結(jié)果。3.        繪制冪律度分布的擬合曲線,一般采用先把數(shù)據(jù)點繪制上去,hold on,在Ex

8、cel中求出擬合直線的方程,然后在Matlab中生成直線,并繪制到源數(shù)據(jù)上。 數(shù)組的創(chuàng)建1.        直接輸入:用空格、逗號或分號隔開,如A1=3 0.5*pi 10 7.5;2.        步長生成法:x=a:anc:b,即a為起始值,b為終止值,inc為間隔步長,如A2=0:0.3:2=0,0.3,0.6,0,9,1.2,1.5,1.8;3.     &

9、#160;  等間距線形生成法:x=linspace(a,b,n),即a到b之間得到n個線形采樣點,如A3=linspace(1,6,3)=1,3.5,6;4.        等間距對數(shù)生成法:x=logspace(a,b,n),即a到b之間得到n個對數(shù)采樣點,如A4=logspace(1,6,6)=10,102,103,104,105,106. 數(shù)組的訪問1.        索引直接訪問:數(shù)組名(序號);2.  &

10、#160;     訪問一塊數(shù)據(jù):數(shù)組名(起始序號:終止序號);3.        訪問最后一部分數(shù)據(jù):數(shù)組名(起始序號:end);4.        構(gòu)造訪問數(shù)組:數(shù)組名(起始序號,間隔序號,終止序號);5.        直接構(gòu)造訪問數(shù)組:數(shù)組名(序號)。實驗二 二維、三維繪圖實驗?zāi)康模赫莆斩S、三維繪圖命令實驗內(nèi)容:1、二維繪圖命令;2、三維

11、繪圖命令;3、動畫制作。代表性命令:y=peaks;plot(y);x=peaks;x,y=meshgrid(-2:0.2:2,-1:0.1:1);z=x.*exp(-x.2-y.2);u,v,w=surfnorm(x,y,z);quiver3(x,y,z,u,v,w);hold on, surf(x,y,z); hold offx=linspace(0,2*pi);loglog(x,sin(x)semilogx(linspace(0,2*pi),sin(x)semilogy(linspace(0,2*pi),sin(x)plotyy(linspace(0,2*pi),sin(x),linsp

12、ace(0,2*pi),2*cos(x)help 指令x=linspace(0,2*pi);plotyy(x,sin(x),x,3*cos(x)x=linspace(0,8*pi);semilogx(x,sin(x);x=linspace(0,2*pi);y1=sin(x);y2=exp(-x);plotyy(x,y1,x,y2);x=0:0.5:4*pi;y=sin(x);plot(x,y,'k:diamond')k代表黑色其他 b c g r w y make: o + x * . < > square pentagram 給圖形加上標示x=0:0.1:4*pi

13、;subplot(2,2,1);plot(x,sin(x);subplot(2,2,2);plot(x,cos(x);subplot(2,2,3);plot(x,sin(x).*exp(-x/5);subplot(2,2,4);plot(x,x.2);t=0:0.1:2*pi;x=3*cos(t);y=sin(t);subplot(2,2,1);plot(x,y);axis normal 默認長寬比subplot(2,2,2);plot(x,y);axis square 長寬比是1subplot(2,2,3);plot(x,y); axis equal 兩軸比例一致subplot(2,2,4)

14、;plot(x,y);axis equal tight兩軸比例一致圖軸貼近圖形精確圖形繪制fplot('sin(1/x)',0.02,0.2);theta=linspace(0,2*pi);r=cos(4*theta);polar(theta,r);theta=lispace(0,2*pi,50);rho=sin(0.5*theta);x,y=pol2cart(theta,rho);compass(x,y);三維繪圖x=linspace(-2,2,25);y=linspace(-2,2,25);xx,yy=meshgrid(x,y);zz=xx.*exp(-xx.2-yy.2)

15、;mesh(xx,yy,zz); surf(xx,yy,zz);立體圖形測試peaksx,y,z=peaks;meshc(x,y,z);waterfall(x,y,z);meshc(x,y,z);surfc(xx,yy,zz);t=linspace(0,20*pi,501);plot3(t.*sin(t),t.*cos(t),t); 三維曲線試用以下指令:ezsurfc surflezplot3contour3mesh(,x,y,z);hidden offaxis tight曲面顏色控制peaks;colorbar;表示數(shù)字的顏色 比如高度peaks;shading interpshading

16、 flat;shading facetedsurfl(peaks);axis tightcolormap(pink);shading interp指令使用不明白的 比如 可以使用hlep plot 了解plot 的用法x,y=meshgrid(-2:0.2:2, -1:0.1:1);z=x.*exp(-x.2-y.2);u,v,w=surfnorm(x,y,z);quiver3(x,y,z,u,v,w); 畫向量場圖hold on, surf(x,y,z); hold off等高線z=peakscontour(z,30) 30 是指定畫30條等高線x,y,z=peaks;contour3(x,

17、y,z,30)meshc(x,y,z)容積可視化的演示:volvec 可以點擊各個命令演示圖象顯示load clownimage(x);colormap(map);x=imread('ngc6543a.jpg');image(x)A,xy=bucky;gplot(A,xy,'-o');axis equal產(chǎn)生動畫的命令:lorenz truss travel fitdemo spinner xphide onecart dblcart1 simppend dblpend1 dblpend2 penddemofcmdemo juggler invkine slcp

18、1 slcpp1 slbb sltbu實驗三 變量與數(shù)據(jù)結(jié)構(gòu)實驗?zāi)康模赫莆誐atlab的變量與數(shù)據(jù)結(jié)構(gòu)實驗內(nèi)容:1、矩陣的處理與運算;2、多維數(shù)組;3、結(jié)構(gòu)數(shù)組。代表性命令:參照教材一些特殊矩陣:zeros(m,n) ones(m,n) eye(n) magic(n)逆矩陣運算:a=pascal(4);b=inv(a);a*b這次學(xué)習(xí)矩陣的一些基本操作,包括轉(zhuǎn)置,冪運算,求逆,求秩等.如果有高等代數(shù)的知識,這些都可以用手工的方法求得,在解線性代數(shù)方面不管是理論上還是實踐上都是幫助很大的.其實,不管是什么學(xué)科,矩陣都是相當重要的數(shù)學(xué)工具,用二維矩陣很有直觀性,能直接說明問題.所以學(xué)好矩陣是很重要

19、的.(1)矩陣轉(zhuǎn)置>> A=magic(3)A =8     1     6     3     5     7     4     9     2>> A'ans =8     3  &

20、#160;  4     1     5     9     6     7     2用簡單的'來表示轉(zhuǎn)置.magic是魔方生成命令,參數(shù)為幾次.(2)冪運算         如:>> A3ans =1197    &

21、#160;   1029        1149        1077        1125        1173        1101       

22、1221        1053A3,即(A*A*)A,非各元素3次方。要注意的是矩陣相乘對行列有要求,而且并非所有的矩陣都是可交換的.有些矩陣不能交換,即AB 不等于BA.(3) 矩陣與常數(shù)間運算,常數(shù)與矩陣各元素之間進行運算。如:>> 10*Aans =80    10    60    30    50    70    40&#

23、160;   90    20A+1,表示A中每個元素加1;2*A,表示A中每個元素乘以2;      A / 3 ,表示A中每個元素除以3( 常數(shù)通常只能做除數(shù)).(4)矩陣的逆運算,這在解低階線性方程時經(jīng)常用到,還有一些如最小二乘法等也要用到.      inv ( A )>> inv(A)ans =0.1472   -0.1444    0.0639   -0

24、.0611    0.0222    0.1056   -0.0194    0.1889   -0.1028    注意的是并非所有矩陣都有逆,可逆的充要條件是行列式值為非0數(shù).手工求逆也是很常用到的,在考試或問題較小時經(jīng)常要手工求.基本思路是對原矩陣右邊接上一個單位矩陣然后進行"行"(這很重要,一定要行,不是列!)變換,就是執(zhí)行下面的過程:     8  

25、;   1     6     1     0     0     3     5     7     0     1     0     

26、   4     9     2     0     0     11.0000         0         0    0.1472   -0.1444 

27、;   0.0639         0    1.0000         0   -0.0611    0.0222    0.1056         0      

28、;   0    1.0000   -0.0194    0.1889   -0.1028右邊的那部分就是逆了,你可以發(fā)現(xiàn)它和inv(A)是一樣的.(5)行列式,求行列式也是很常見的,在數(shù)學(xué)分析中求雅可比式,判斷線性方程是否有唯一的解時都要用到.      det ( A )>> det(A)ans =-360(6)求秩函數(shù),如果對線性代數(shù)不甚了解,這個概念可能要復(fù)雜一點,不那么直觀,因為涉及到向量相關(guān)的問題,我就

29、不在這里多說,想深入了解請查看有關(guān)的線性代數(shù)的書.             rank (A)>> rank(A)ans =3(7)求跡函數(shù),就是求對角線元素的和,主要是對方陣,如果不是方陣也可以得一個結(jié)果,但那是not intersting.       trace (A)>> trace(A)ans =15(8)   指數(shù)運算和對數(shù)運算,這個比較少用到.在解常微分方程時經(jīng)

30、常要求這個東西.        expm ( A ),就是:eA.        logm ( A ).(9)   開方運算,可以對矩陣進行平方分解,一般在矩陣分析上用到.        sqrtm ( A ).以上三個函數(shù)都是在基本函數(shù)后面加了個m,如:exp->expm,log->logm,方便記憶.一些技巧:1)可以用鍵盤右邊的上下箭頭來快速定位到已

31、經(jīng)用過的命令,像DOS下一樣.如果知道上次命令的首字母或者前幾字母,可以選打進去,然后用箭頭上翻.2)多查看幫助,經(jīng)常有人抱怨說看不懂英文,其實里面數(shù)學(xué)的東西太多,要很專業(yè)的才能完全理解,作為一般人,不用細究,只要依樣畫葫蘆就可以了.3)矩陣很重要!不管你學(xué)什么,如果你學(xué)管理,你會發(fā)現(xiàn)里面有支付矩陣,雖然它沒有很嚴格的數(shù)值意義;如果你對統(tǒng)計感興趣,你會發(fā)現(xiàn)很多復(fù)雜的公式原來可以用矩陣來簡單表示的特殊矩陣的生成(1)空陣,即空矩陣不包含任何元素,但非“不存在”.這在矩陣操作中有很有用處的,下面會給出一個例子.       利用空陣縮維的

32、例子:>> A=1,2,3;4,5,6A =1     2     3     4     5     6>> A(:,1,3)=%把矩陣a的第1,3列去掉,這樣很直接比起用循環(huán)或者其他方式快多了!A =2     5順便說一下對矩陣一些特定行或列的提取,這在之前的文章中有提到過:A ( 1 , : ) A 的第1行,當然1可以換成其

33、他的數(shù),如果有的話.A ( : , 2 ) A 的第2列A ( : , : )   A本身;A ( : ) A所有元素按列排成的列向量,注意是按列序來排的; (2)常用工具矩陣全零矩陣       zeros(N)      生成 N×N 的全零矩陣,一般在賦初值時用到,可以避免在計算時為變量開辟新的內(nèi)存;>> zeros(3)ans =0     0     0&

34、#160;    0     0     0     0     0     0       zeros(M,N)    生成 M×N 的全零矩陣,作用同上.       zeros(size(A) 

35、     與A相同大小,注意size(A)是計算矩陣A的行和列,結(jié)果為r,c;>> zeros(size(A)ans =0     0單位矩陣,作用同全零矩陣是一樣的,不重復(fù)注釋說明;       eye(N) >> eye(4)ans =1     0     0     0    

36、 0     1     0     0     0     0     1     0     0     0     0     1  

37、     eye(M,N)        eye(size(A) 全一陣,即一個矩陣的所有元素都是1,這在賦初值時很有用;       ones(N)       ones(M,N)>> ones(2,4)ans =1     1     1    

38、; 1     1     1     1     1       ones(size(A)隨機矩陣,注意生成的數(shù)據(jù)都為0到1之間,如果要想為整數(shù),則可以另外處理,下面將介紹:      rand(N)rand(M,N)         

39、rand(size(A)       rand   生成隨機數(shù),為一個數(shù),也是在0與1之間.>> rand(3)ans =0.9501    0.4860    0.4565    0.2311    0.8913    0.0185    0.6068    0.7621   

40、; 0.8214如果要得到整數(shù),如0到100之間,則可以對原來0到1之間的數(shù)乘上100然后取整:>> r=round(100*rand(3)%round是向原點取整,即取最靠近原點的整數(shù).如round(3.3)=3;round(-3.3)=-3.r =44    92    41    62    74    94    79    18   

41、92上面介紹的方法都是最實用的方法,如果真正要編寫程序,很多時候都要用到矩陣的一些特殊操作1)矩陣的抽取,在矩陣處理中,經(jīng)常要用到對矩陣部分元素的提取,如對角線,某一列或一行,或者上三角,下三角提取等等.對角元素抽取,即矩陣的對角線,包括主對角線和非主對角線: diag(A),其語法如下.    a = diag(A,k)                    

42、60;  k = 0    主對角線,當k=0時,也不可以不加此參數(shù);                       k > 0 , 上方第k條對角線;               &#

43、160;       k < 0 , 下方第(-k)條對角線;   >> A=magic(3)A =8     1     6     3     5     7     4     9   

44、  2>> a=diag(A)a =8     5     2>> b=diag(A,1)b =1     7>> c=diag(A,-1)c =3     9diag命令不僅可以對已知矩陣進行對角線的抽取,也可以根據(jù)已知對角線來構(gòu)造對應(yīng)的矩陣.參數(shù)是一樣的.   X = diag(v,k) 向量 v 為矩陣 X 的第k條對角線   

45、0;                    X其余元素為 0    X = diag(v,0)   當k=0時,可以省去不寫,效果與diag(v) 一樣.>> X=diag(a)X =8     0     0     0 &#

46、160;   5     0     0     0     2>> Y=diag(a,1)Y =0     8     0     0     0     0    

47、 5     0     0     0     0     2     0     0     0     0          

48、0;                                               上三角陣、下三角陣的抽取X = tril

49、(A)         提取 A 的主下三角部分, X其余元素為 0 X = tril (A , k)     提取 A 的第k條對角線(含)以下部分,X其余元素置為0.X = triu (A)         提取 A 的主上三角部分, X其余元素為 0 X = triu (A , k)     提取 A 的第k條對角線(含)以上部分,X其余元素置為0.記

50、憶這個命令是按英文縮寫來記的,tri是triple的前三字母,為三的,這類單詞很多,常見的有三角形:triangle.而l則為:low,u則為up.這樣記就可以很快記住這個命令.>> X=tril(A)X =8     0     0     3     5     0     4     9 &

51、#160;   2>> X=tril(A,-1)X =0     0     0     3     0     0     4     9     02)矩陣的擴展利用小矩陣進行組合,可以組成大的矩陣,在矩陣分塊中應(yīng)用較多,有些時候把一些分散的數(shù)

52、據(jù)合成一個大矩陣便于分析和計算也要進行小矩陣的組合.可以利用對矩陣標識塊的賦值命令來實現(xiàn)矩陣的合并.    >> v = 1    2    6    20 ;    >> a1= -v ( 2 : 4 ); eye ( 2 ), zeros ( 2, 1 )     a1=           -2&#

53、160;  -6   -20           1    0     0           0    1     0對上述結(jié)果的說明:-v ( 2 : 4 )為提取v的第二到第四列,然后加負號;eye ( 2 )生成2X2單位

54、陣,此命令在前面的教程有所介紹.zeros ( 2, 1 )為生成2X1的全0矩陣.    >> a2= -v ( 2 : 4 ); a2 ( 2:3, 1:2 ) = eye ( 2 )     a2 =           -2   -6   -20           1 

55、0;  0     0           0    1     0a2 ( 2:3, 1:2 ) = eye ( 2 ) ,令a2的第二第三行和第一第二列為單位矩陣.從上面的例子可以看出用MATLAB來進行矩陣合成是很方便的.當也要注意,并非可以任意的合并,而是要求行列數(shù)對應(yīng)相等.如上面的:a2 ( 2:3, 1:2 ) = eye ( 2 ),就是要左邊和右都是一樣大小的矩

56、陣.如果不一樣,就要出錯,所以合并之前一定要對結(jié)果有全面的掌握,知道哪塊放哪.實驗四 Matlab程序設(shè)計實驗?zāi)康模赫莆誐atlab的程序設(shè)計方法實驗內(nèi)容:1、Matlab的運算符; 2、M文件;3、程序流程控制。代表性命令:參照教材相關(guān)內(nèi)容x=0:0.1:8*pi;h=plot(x,sin(x).*exp(-x/5),'eraseMode','xor');for i=1:10000 y=sin(x+i/10).*exp(-x/5);set(h, 'ydata',y);drawnow end M文件介紹1.命令式文件:相當于在命令窗口中逐行輸入并

57、運行命令,所產(chǎn)生的所有變量均為全局變量;2.函數(shù)式文件:為了實現(xiàn)計算中的參數(shù)傳遞,需要用到函數(shù)式文件。標志是第一行為function語句,函數(shù)式文件可以有返回值,也可以只執(zhí)行操作而無返回值;函數(shù)式文件執(zhí)行之后,只保留最后結(jié)果,所定義的變量僅在函數(shù)內(nèi)部起作用,并隨調(diào)用的結(jié)束而被清除。(1)注意文件名與函數(shù)名一一對應(yīng),才能保證調(diào)用成功;(2)function后的語句定義函數(shù)名和輸入輸出參數(shù),在函數(shù)被調(diào)用過程中將按此輸入輸出格式執(zhí)行;(3)養(yǎng)成良好的注釋習(xí)慣,以方便用戶使用。 控制語句 1.循環(huán)語句:for循環(huán)、while循環(huán)(1) for循環(huán):預(yù)先設(shè)定好循環(huán)次數(shù) 如 for i=1:n x(i)=

58、0; end注:matlab執(zhí)行語句可以是一個向量(n*1階的矩陣),表示如下: E=expression; m,n=size(E); for j=1:n V=E(:,j); Statementsend end For 語句一定要有 end作為結(jié)束標志。(2)while循環(huán):while語句的判斷控制可以是一個邏輯判斷語句,適用范圍更廣一些。 注:當表達式是標量時,非零對應(yīng)為true,當表達式不是標量時,可用any函數(shù)和all函數(shù)產(chǎn)生。2.選擇語句 一般形式: If expression()statements;else expression()statements; end注:else子句中嵌

59、套if 時,就形成了elseif結(jié)構(gòu),可實現(xiàn)多路選擇結(jié)構(gòu)3.分支語句 通用格式:實現(xiàn)多情況下的開關(guān)控制 switch switch_expr   case case_expr      statement, ., statement   case case_expr1, case_expr2, case_expr3, .     statement, ., statement  otherwise    statement, ., st

60、atement end 注:只執(zhí)行一個case后面的命令并跳出開關(guān)人機交互語句 (1)echo命令:一般情況下,M文件執(zhí)行時,文件中的命令不會顯示出來,echo可使文件命令在執(zhí)行時可見(主要用于調(diào)試)(2)用戶輸入提示命令input,yesinput 功能:input命令用來提示用戶從鍵盤輸入數(shù)據(jù)、字符串或表達式,并接收輸入值; Yesinput是一個智能輸入命令,帶有默認輸入和輸入范圍檢查 Answer=yesinput(question,default,possib) (3)請求鍵盤輸入命令keyboard:暫停運行程序并處于等待鍵盤輸入狀態(tài)(便于調(diào)試及程序運行中修改變量),鍵入“R”程序

61、繼續(xù)運行; (4)等待用戶反應(yīng)命令pause:等待用戶按任意鍵后繼續(xù)運行(便于查看中間結(jié)果);(5)中斷命令break:根據(jù)循環(huán)另設(shè)的條件來判斷是否提前跳出循環(huán)。 函數(shù)變量及變量作用域(1)變量主要有輸入變量、輸出變量及函數(shù)內(nèi)部變量; (2)函數(shù)的輸入變量為局部變量,函數(shù)對輸入變量的一切操作和修改如果不依靠輸出變量傳出,將不會影響工作空間中該變量的值; (3)函數(shù)nargin用于控制輸入變量的個數(shù)(實現(xiàn)不定個數(shù)參數(shù)輸入的操作); (4)針對輸入變量的函數(shù)varargin:可實現(xiàn)不定數(shù)目輸入變量的函數(shù)的程序設(shè)計,對函數(shù)的一切輸入變量均將存儲在以varargin命名的細胞數(shù)組中; (5)如需使用全

62、局變量,應(yīng)使用命令global定義,且在任何使用該全局變量的函數(shù)中(包括命令窗口中)都應(yīng)加定義; (6)定義全局變量時,變量之間以空格分隔,而不能以逗號分隔。5.4 子函數(shù)與局部函數(shù) (1)可定義子函數(shù),用來擴充函數(shù)的功能。在函數(shù)文件中題頭定義的函數(shù)為主函數(shù),而在函數(shù)體內(nèi)定義的其他函數(shù)均為子函數(shù);子函數(shù)只能為主函數(shù)或同一主函數(shù)下其他的子函數(shù)調(diào)用。 如 function c=test(a,b) %主函數(shù) C=test1(a,b)*test2(a,b); function c=test1(a,b) %子函數(shù)1,c為形式參數(shù) C=a+b; function c=test2(a,b) %子函數(shù)2 C=

63、a-b; (2)局部函數(shù):放置在目錄private下的函數(shù)為局部函數(shù),這些函數(shù)只有private目錄的父目錄中的函數(shù)才可以調(diào)用,其它目錄的函數(shù)不能調(diào)用; (3)M文件調(diào)用函數(shù)的順序: 子函數(shù)局部函數(shù)搜索路徑上的其他M文件5.5 程序設(shè)計的輔助函數(shù)輔助函數(shù)可用以支持M文件的編輯:執(zhí)行函數(shù)、容錯函數(shù)、時間控制函數(shù); 1.執(zhí)行函數(shù) 表5.1 Matlab語言中的計算及執(zhí)行函數(shù) 2.容錯函數(shù):通過使用下述的函數(shù)及流程控制結(jié)構(gòu)可以實現(xiàn)對M文件的容錯控制處理,使程序具有更強的“魯棒性“ (1)error(錯誤信息); (2)warning:與函數(shù)error不同的是,它不會中斷程序執(zhí)行,僅給出警告信息; (

64、3)lasterr,lastwarn以及errortrap on/off:lasterr給出上一個錯誤信息,lastwarn給出上一個警告信息, errortrap on/off則是在調(diào)試過程中指定是否跳過錯誤; (4)try 語句段1   catch 語句段2 end:若語句段1 內(nèi)出現(xiàn)錯誤,則將執(zhí)行語句段2 ,若也出現(xiàn)錯誤,則程序?qū)箦e并終止。3.時間控制函數(shù):用于監(jiān)視程序運行的時間 表:MATLAB語言的計時函數(shù):定量給出某一程序段完成指定功能所消耗的時間資源,也可作為比較程序優(yōu)劣的一種定量標準5.6 程序設(shè)計的優(yōu)化 1.以矩陣作為操作主體:盡可能避免循環(huán)運算,應(yīng)強調(diào)

65、對矩陣本身整體的運算,避免對矩陣元素的操作(將循環(huán)運算轉(zhuǎn)換為向量運算); 2.數(shù)據(jù)的預(yù)定義:對于可能出現(xiàn)變量維數(shù)不斷擴大的問題,應(yīng)預(yù)先估計變量可能出現(xiàn)的最大維數(shù),進行預(yù)定義;3.內(nèi)存的管理:clear,pack,quit,save,load.其中pack將把內(nèi)存中所有變量暫存入磁盤,再用內(nèi)存中連續(xù)的空間存儲這些變量 程序調(diào)試1.M文件錯誤種類 語法錯誤:發(fā)生在M文件解釋過程中,一般是由函數(shù)參數(shù)輸入類型有誤或矩陣運算階數(shù)不符等引起; 執(zhí)行錯誤:發(fā)生在程序運行過程中,出現(xiàn)溢出或死循環(huán)等引進,這些錯誤都與程序本身有關(guān);方法:在可能出現(xiàn)NaN,Inf或空矩陣等異常數(shù)值的地方提供控制語句來識別,同時采用

66、其他方法來處理,識別函數(shù):isnan,isinf,isempty 2.執(zhí)行錯誤的識別 (1)使用Keyboard函數(shù)中斷程序,程序?qū)⑻幱谡{(diào)試狀態(tài),出現(xiàn)提示符”K>>”,可以實現(xiàn)函數(shù)工作空間與命令窗口工作空間的交互; (2)將函數(shù)頭注釋掉,使函數(shù)變?yōu)槟_本文件,所操作的對象也相應(yīng)為命令窗口工作空間中的變量; (3)使用調(diào)試菜單或調(diào)試函數(shù) 3.調(diào)試過程:主要調(diào)試函數(shù)dbstop,dbstatus,dbtype,dbstep,dbstack等 Dbstop:設(shè)置斷點 Dbstatus:顯示斷點信息 Dbtype:顯示M文件文本 Dbstep:從斷點處繼續(xù)執(zhí)行M文件 Dbstack:顯示M文件執(zhí)行時調(diào)用的堆棧 dbup./dbdown:實現(xiàn)工作空間的切換把 xor 換成background,none實驗五 數(shù)值運算與應(yīng)用目的:掌握Matlab數(shù)值運算與應(yīng)用的方法實驗內(nèi)容:1、線形代數(shù);2、多項式的處理與分析;3、數(shù)學(xué)函數(shù)的處理與分析。代表性命令:多項式計算:p1(x)=x3+x+1 p2(x)=x2-x+2p1=1,0,1,1; p2=0,1,-1,2q=p1+p2;q=p1-p2q=conv(p1,p2);多項式乘積q,r=deconv(p1,p2)多項式相除多項式求根:p(x)=x4+3*x3+x2+5*x+1p=

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論