MATLAB語言基礎(chǔ)._第1頁
MATLAB語言基礎(chǔ)._第2頁
免費預(yù)覽已結(jié)束,剩余20頁可下載查看

下載本文檔

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

文檔簡介

1、MATLAB 語言基礎(chǔ)第一節(jié) 使用 MATLAB 的窗口環(huán)境 一、MATLAB 語言的顯著特點1、具有強大的矩陣運算能力:Matrix Laboratory (矩陣實驗室),使得矩陣運算非 常簡單。2、是一種演算式語言?MATLAB 的基本數(shù)據(jù)單元是既不需要指定維數(shù),也不需要說明數(shù)據(jù)類型的矩陣 (向量和標(biāo)量為矩陣的特例),而且數(shù)學(xué)表達(dá)式和運算規(guī)則與通常的習(xí)慣相同。 因此 MATLAB 語言編程簡單,使用方便。例 exp2_1.mclc %清屏clear %從內(nèi)存中清除變量和函數(shù)more onecho on%求矩陣與矩陣的乘積,矩陣與向量的乘積A=5 6 7;9 4 6;4 3 6B=3 4 5

2、;5 7 9;7 3 1X=5 7 8C=A*BY=A*Xmore offecho off二、MATLAB 命令窗口1、啟動 MATLAB 命令窗口?計算機安裝好 MATLAB 之后,雙擊 MATLAB 圖標(biāo),就可以進入命令窗口,此時 意味著系統(tǒng)處于準(zhǔn)備接受命令的狀態(tài),可以在命令窗口中直接輸入命令語句。?MATLAB 語句形式變量二表達(dá)式;通過等于符號將表達(dá)式的值賦予變量。當(dāng)鍵入回車鍵時,該語句被執(zhí)行。語句執(zhí) 行之后,窗口自動顯示出語句執(zhí)行的結(jié)果。如果希望結(jié)果不被顯示,則只要在語 句之后加上一個分號(;)即可。此時盡管結(jié)果沒有顯示,但它依然被賦值并在 MATLAB 工作空間中分配了內(nèi)存。2、命

3、令行編輯器(1)方向鍵和控制鍵可以編輯修改已輸入的命令:回調(diào)上一行命令T:回調(diào)下一行命令(2)命令窗口的分頁輸出more off :不允許分頁more on :允許分頁?more(n) :指定每頁輸出的行數(shù)?回車前進一行,空格鍵顯示下一頁, q 結(jié)束當(dāng)前顯示。(3)多行命令()?如果命令語句超過一行或者太長希望分行輸入,則可以使用多行命令繼續(xù)輸入。?S=1-12+13+4+9-4-18;三、變量和數(shù)值顯示格式1 、變量( 1 )變量的命名:變量的名字必須以字母開頭(不能超過 19 個字符),之后可以是 任意字母、數(shù)字或下劃線;變量名稱區(qū)分字母的大小寫;變量中不能包含有標(biāo)點 符號。2)一些特殊的

4、變量ans:用于結(jié)果的缺省變量名i 、j :虛數(shù)單位:函數(shù)的輸入變量個數(shù)nargout :函數(shù)的輸出變量個數(shù):最小正實數(shù)realmax :最大正實數(shù) nan :不定量flops :浮點運算數(shù)3)變量操作?在命令窗口中,同時存儲著輸入的命令和創(chuàng)建的所有變量值,它們可以在任 何需要的時候被調(diào)用。如要察看變量 a 的值,只需要在命令窗口中輸入變量的 名稱即可: a2、數(shù)值顯示格式?任何 MATLAB 的語句的執(zhí)行結(jié)果都可以在屏幕上顯示,同時賦值給指定的變 量,沒有指定變量時,賦值給一個特殊的變量 ans,數(shù)據(jù)的顯示格式由 format 命 令控制。format 只是影響結(jié)果的顯示,不影響其計算與存儲

5、;MATLAB 總是以雙字長浮點數(shù)(雙精度)來執(zhí)行所有的運算。如果結(jié)果為整數(shù),則顯示沒有小數(shù);如果結(jié)果不是整數(shù),則輸出形式有:format (short):短格式(5 位定點數(shù))99.1253format long:長格式(15 位定點數(shù)99.12345678900000format short e:短格式 e 方式 9.9123e+001format long e:長格式 e 方式 9.912345678900000e+001format bank: 2 位十進制 99.12format hex:十六進制格式四、簡單的數(shù)學(xué)運算1、常用的數(shù)學(xué)運算符? +, , * (乘),/ (左除),(右除

6、),A(冪)? 在運算式中, MATLAB 通常不需要考慮空格;多條命令可以放在一行中,它們之 間需要pi :圓周率 nargineps :計算機的最小數(shù)inf :無窮大 realmin用分號隔開;逗號告訴 MATLAB 顯示結(jié)果,而分號則禁止結(jié)果顯示。 2、常用數(shù)學(xué)函數(shù)abs,sin,cos,tan,asin,acos,atan,sqrt,exp,imag,real,sign, log,log10,conj (共扼復(fù)數(shù))等例 exp2_2.mclc clear more on echo on %為便于理解, 在程序等執(zhí)行過程中顯示程序的表達(dá)式 a=16;b=12;c=3; d=4; e=a+

7、b-c*d f=e/2 k=e2 h=cA3 g=e+f+ .2+1-9 aa=sin(g) abs(aa) bb=2+3j cc=conj(bb) rbb=real(bb) log(rbb) sqrt(rbb) exp(rbb)echo off more off五、 MATLAB 的工作空間1、MATLAB 的工作空間包含了一組可以在命令窗口中調(diào)整(調(diào)用)的參數(shù) ? who :顯示當(dāng)前工作空間中所有變量的一個簡單列表?whos :則列出變量的大小、數(shù)據(jù)格式等詳細(xì)信息?clear :清除工作空間中所有的變量?clear 變量名:清除指定的變量 2、保存和載入 workspace( 1) sav

8、e filename variables?將變量列表 variables 所列出的變量保存到磁盤文件 filename 中?Variables 所表示的變量列表中, 不能用逗號, 各個不同的變量之間只能用空格來 分隔。?未列出 variables 時,表示將當(dāng)前工作空間中所有變量都保持到磁盤文件中。?缺省的磁盤文件擴展名為 “m.at ”,可以使用 “-”定義不同的存儲格式( ASCII 、V4等)( 2) load filename variables?將以前用 save 命令保存的變量 variables 從磁盤文件中調(diào)入 MATLAB 工作空間。?用 load 命令調(diào)入的變量,其名稱為用

9、 save 命令保存時的名稱,取值也一樣。?Variables 所表示的變量列表中, 不能用逗號, 各個不同的變量之間只能用空格來 分隔。?未列出 variables 時,表示將磁盤文件中的所有變量都調(diào)入工作空間。3、退出工作空間?quit 或 exit六、文件管理?文件管理的命令,包括列文件名、顯示或刪除文件、顯示或改變當(dāng)前目錄等。(what、dir、type、delete、cd、which)?what:顯示當(dāng)前目錄下所有與 matlab 相關(guān)的文件及它們的路徑。?dir :顯示當(dāng)前目錄下所有的文件?which :顯示某個文件的路徑?cd path :由當(dāng)前目錄進入 path 目錄?cd .

10、 :返回上一級目錄?cd:顯示當(dāng)前目錄?type filename :在命令窗口中顯示文件 filename?delete filename :刪除文件 filename七、使用幫助1、help 命令,在命令窗口中顯示?MATLBA 的所有函數(shù)都是以邏輯群組方式進行組織的,而 MATLAB 的目錄結(jié)構(gòu) 就是以這些群組方式來編排的。?help matfun :矩陣函數(shù)數(shù)值線性代數(shù)?help general :通用命令?help graphics :通用圖形函數(shù)?help elfun :基本的數(shù)學(xué)函數(shù)?help elmat :基本矩陣和矩陣操作?help datafun :數(shù)據(jù)分析和傅立葉變換函數(shù)

11、?help ops :操作符和特殊字符?help polyfun :多項式和內(nèi)插函數(shù)?help lang :語言結(jié)構(gòu)和調(diào)試?help strfun :字符串函數(shù)?help control :控制系統(tǒng)工具箱函數(shù)2、helpwin :幫助窗口3、helpdesk :幫助桌面,瀏覽器模式4、lookfor 命令:返回包含指定關(guān)鍵詞的那些項5、demo :打開示例窗口第二節(jié)MATLAB 巨陣運算及多項式處理一、矩陣的輸入1、在命令窗口中輸入 a=1; b=2; c=3; x=5 b c; a*b a+c c/bx=5.000 2.000 3.0002.000 4.000 1.500? 矩陣生成不但可以

12、使用純數(shù)字(含復(fù)數(shù)),也可以使用變量(或者說采用一個表 達(dá)式)。矩陣的元素直接排列在方括號內(nèi), 行與行之間用分號隔開, 每行內(nèi)的元 素使用空格或逗號隔開。大的矩陣可以用分行輸入,回車鍵代表分號。2、語句生成(1)用線性等間距生成向量矩陣( start:step:end ) a=1:2:10a=其中 start 為起始值,step 為步長,enc 為終止值。當(dāng)步1 3 5 7 9長為 1 時可省略 step 參數(shù);另外 step 也可以取負(fù)數(shù)。(2)a=linspace(n1,n2,n)在線性空間上,行矢量的值從 n1 到 n2,數(shù)據(jù)個數(shù)為 n,缺省 n 為 100。a=linspace(1,1

13、0,10)a=12 3 4 5 6 7 8 910( 3) a=logspace(n 1 ,n2,n)?在對數(shù)空間上,行矢量的值從 10門1 到 10n2,數(shù)據(jù)個數(shù)為 n,缺省 n 為 50。這個 指令為建立對數(shù)頻域軸坐標(biāo)提供了方便。 a=logspace(1,3,3) a=y=2,4, 53 6 8 y=2 4 53 6 810 100 1000(4) 一些常用的特殊矩陣 單位矩陣: eye(m,n); eye(m) 零矩陣: zeros(m,n); zeros(m) 一矩陣: ones(m,n); ones(m)對角矩陣:對角元素向量V=a1,a2,an A=diag(V)隨機矩陣:ran

14、d(m,n)產(chǎn)生一個 mxn 的均勻分別的隨機矩陣eye(2)ans=1 00 1zeros(2) ans=0 00 0ones(2) ans=1 11 1如果已知 A 為方陣,則 V=diag(A)可以提取 A 的對角 元素構(gòu)成向量 V。、矩陣的運算1、轉(zhuǎn)置:對于實矩陣用()符號或( .)求轉(zhuǎn)置結(jié)果是一樣的;然而對于含復(fù) 數(shù)的矩陣,則()將同時對復(fù)數(shù)進行共軛處理,而(.)則只是將其排列形式進行轉(zhuǎn)置。eye(2,3)ans=1 0 00 1 0zeros(2,3) ans=0 0 00 0 0ones(2,3) ans=1 1 11 1 1V=5 7 2; A=diag(V)A=5 0 00

15、7 00 0 2a=1 2 3;4 5 6.a =142536b=1+2i 2-7i b =1.0000 - 2.0000i2.0000 + 7.0000ib=1+2i 2-7i. b =1.0000 + 2.0000i2.0000 - 7.0000i a=1 2 3; 4 5 6; 2 3 5; b=inv(a)b =-2.33330.33331.00002.66670.3333-2.0000-0.6667-0.33331.0000 det(a) ans =-32、四則運算與冪運算+ _ *;和 / ; A ; * ; ;/;A)I I-1*)J J J * J如:a=1 2;3 4 b=

16、3 5; 5 9 c=a+b d=a-b c= d=47-2-3813-2-5 a*b=13 23; 29 51a/b=-0.50 0.50;3.50-.50 ab=-1 -1;2 3 aA3=37 54; 81 118 a.*b=3 10;15 36 a./b=0.33 0.40;0.60 0.44 a.b=3.00 2.50;1.67 2.25 a.A3= 1 8; 27 64只有維數(shù)相同的 矩陣才能進行加 減運算。注意只有當(dāng)兩個 矩陣中前一個矩 陣的列數(shù)和后一 個矩陣的行數(shù)相 同時,才可以進行乘法運算。 ab 運 算等效于求 a*x=b 的解;而 a/b 等 效于 求x*b=a 的解。

17、只有方陣才可以 求冪。點運算是兩個維 數(shù)相同矩陣對應(yīng) 元素之間的運算, 在有的教材中也 定義為數(shù)組運算。3、 逆矩陣與行列式計算求逆:inv(A)求行列式:det(A)要求矩陣必須為方陣4、了解矩陣超越函數(shù)?在 MATLAB 中 exp、sqrt 等命令也可以作用到矩陣上,但這種運算是定義在矩陣的單 個元素上的,即分別對矩陣的每一個元素 進行計算。?超越數(shù)學(xué)函數(shù)可以在函數(shù)后加上 m 而成為矩陣的超越函數(shù),例如:expm,sqrtm 。矩 陣的超越函數(shù)要求運算矩陣為方陣。、矩陣的操作1、矩陣下標(biāo)?MATLAB 通過確認(rèn)矩陣下標(biāo),可以對矩陣進行插入子塊,提取子塊和重排子塊的 操作。?A(m,n):

18、提取第 m 行,第 n 列元素?A(:,n):提取第 n 列元素?A(m,:):提取第 m 行元素?A(m1:m2,n1:n2):提取第 ml 行到第 m2 行和第 n1 列到第 n2 列的所有元素(提取子 塊)。?A(:):得到一個長列矢量,該矢量的元素按矩陣的列進行排列。?矩陣擴展:如果在原矩陣中一個不存在的地址位置上設(shè)定一個數(shù)(賦值),則該 矩陣會自動擴展行列數(shù),并在該位置上添加這個數(shù),而且在其他沒有指定的位置 補零。?消除子塊:如果將矩陣的子塊賦值為空矩陣,則相當(dāng)于消除了相應(yīng)的矩陣子塊。2、矩陣的大小? m,n=size(A,x):返回矩陣的行列數(shù) m 與 n,當(dāng) x=1,則只返回行數(shù)

19、 m,當(dāng) x=2,則 只返回列數(shù) n。? length(A)=max(size(A):返回行數(shù)或列數(shù)的最大值。? rank(A):求矩陣的秩length(a) ans =3max(size(a) ans =33、了解矩陣操作函數(shù):flipud ; fliplr ; rot90四、多項式處理(1)多項式的建立與表示方法在 MATLAB 中,多項式使用降幕系數(shù)的行向量表示,如:多項式432x -12x 0 x 25x 116表示為:p=1 -12 0 25 116,使用函數(shù) roots 可以求出多項式等于 0 的根,根用列 向量表示。若已知多項式等于 0 的根,函數(shù) poly 可以求出相應(yīng)多項式。

20、r=roots(p) r =11.74732.7028-1.2251 + 1.4672i-1.2251 - 1.4672i(2)多項式的運算?相乘 conva=1 2 3 ; b=1 2c=conv(a,b)=1 4 7 6conv 指令可以嵌套使用,如 conv(conv(a,b),c) ?相除 deconv q,r=deconv(c,b)q=1 2 3商多項式r=0 0 0余多項式a=1 2 3;3 4 5;m,n=size(a) m=2n =3rank(a)ans =2P=P0ly(r)P =1-12-025116?求多項式的微分多項式 polyder polyder(a)=2 2?求多

21、項式函數(shù)值 polyval(p,n) :將值 n 代入多項式求解。 polyval(a,2)=11(3) *多項式的擬合?多項式擬合又稱為曲線擬合,其目的就是在眾多的樣本點中進行擬合,找出滿足 樣本點分布的多項式。這在分析實驗數(shù)據(jù),將實驗數(shù)據(jù)做解析描述時非常有用。?命令格式:p=polyfit(x,y,n),其中 x 和 y 為樣本點向量,n 為所求多項式的階數(shù),p 為求出的多項式。?例 exp2_15.m%curve fitting of sin waveclcclearx=0:0.1:2*pi; % 生成樣本點 xy=sin(x)+0.5*rand(size(x); %生成樣本點 y,通過

22、隨機矩陣p=polyfit(x,y,3) % 擬合出多項式( 3 階)y1=polyval(p,x); % 求多項式的值plot(x,y,+,x,y1,-r) %繪制多項式曲線,以驗證結(jié)果(4) *多項式插值?多項式插值是指根據(jù)給定的有限個樣本點, 產(chǎn)生另外的估計點以達(dá)到數(shù)據(jù)更為平 滑的效果。該技巧在信號處理與圖像處理上應(yīng)用廣泛。?所用指令有一維的 interp1 、二維的 interp2 、三維的 interp3 。這些指令分別有不同 的方法(method ),設(shè)計者可以根據(jù)需要選擇適當(dāng)?shù)姆椒?,以滿足系統(tǒng)屬性的要 求。Helppolyfun 可以得到更詳細(xì)的內(nèi)容。y=interp1(xs,y

23、s,x,method)?在有限樣本點向量 xs 與 ys 中,插值產(chǎn)生向量 x 和 y,所用方法定義在 method 中,有 4種選擇:?nearest :執(zhí)行速度最快,輸出結(jié)果為直角轉(zhuǎn)折?linear:默認(rèn)值,在樣本點上斜率變化很大?spline :最花時間,但輸出結(jié)果也最平滑?cubic :最占內(nèi)存,輸出結(jié)果與 spline 差不多例 exp2_16.m%curve interpolationys=0 0.9 0.6 1 0 0.1 -0.3 -0.7 -0.9 -0.2; % 已有的樣本點 ysxs=0:length(ys)-1;%已有的樣本點 xsx=0:0.1:length(ys)-

24、1;% 新的樣本點 xy1=interp1(xs,ys,x,nearest); % 插值產(chǎn)生新的樣本點 y1 y2=interp1(xs,ys,x,linear);%插值產(chǎn)生新的樣本點 y2y3=interp1(xs,ys,x,spline); %插值產(chǎn)生新的樣本點 y3 y4=interp1(xs,ys,x,cubic); %插值產(chǎn)生新的樣本點 y4plot(xs,ys,+k,x,y1,:r,x,y2,-m,x,y3,-c,x,y4,-b) %分別繪制不同方法產(chǎn)生的曲線legend(sampled point,nearest,linear,spline,cubic)求矩陣 A 的特征向量 V

25、 及特征值 D,滿足 A*V=V*D。其中 D 的對角線元素為特征值, V 的 列為對應(yīng)的特征向量。 如果 D=eig(A)則只返回特 征值。五 *、MATLAB 數(shù)據(jù)處理1 、矩陣分解 ( 1 )奇異值分解 U,S,V=svd(A) 例:a=9868可以驗證:u*u =Iv*v =I u*s*v =a求矩陣 A 的奇異值及分解矩陣,滿足 U*S*V =A 其中 U、 V矩陣為正交矩陣(U*U =), S 矩陣為對角矩陣,它的對 角元素即 A 矩陣的奇異值。u,s,v=svd(a)u =0.7705-0.63750.63750.7705s =15.5765001.5408v =0.6907-0

26、.72310.72310.6907(2)特征值分解V,D=eig(A)例: a =9868v,d=eig(a)v =0.7787-0.73200.62740.6813d =15.4462001.5538可以驗證: A*V=V*D將矩陣 A 做正交化分解,使得 Q*R=A,其中 Q 為正交 矩陣(其范數(shù)為 1,指令 norm(Q)=1) , R 為對角化的 上三角矩陣。norm(q)q*rans =ans =1 9.0000 8.00006.0000 8.0000( 4)三角分解L,U=lu(A)?將 A 做對角線分解,使得 A=L*U,其中 L 為下三角矩陣,U 為上三角矩陣。?注意:L 實際

27、上是一個“心理上”的下三角矩陣,它事實上是一個置換矩陣P 的逆矩陣與一個真正下三角矩陣 L1 (其對角線元素為 1 )的乘積。L1,U1,P=lu(A)例: a=1 2 3;4 5 6;7 8 9比較: l1,u1,p=lu(a) l,u=lu(a) l1 =1.00 0 00.14 1.00 00.570.501.00u17.008.009.0000.861.71000.00p =0011000102*、數(shù)據(jù)分析( 1 )繪制函數(shù)圖形: fplot()( 2)求極值: fmin,fmins( 3)求零點:尋找一維函數(shù)的過零點 fzero()( 4)頻譜分析( fft): y=FFT(x) ;

28、unwrap() ;abs;angle 畫出幅頻和相頻曲線( 5)了解數(shù)據(jù)分析函數(shù): max,min,mean,sum,prod 等( 6)了解積分運算: trap2,quad,quad83*、常微分方程數(shù)值解t,x=ode23( xfun ,t0,tf,x0,tol)t,x=ode45( xfun ,t0,tf,x0,tol)(3)正交分解Q,R=qr(A) 例: a =9 86 8q,r=qr(a) q =-0.8321 -0.5547-0.5547 0.8321r =-10.8167 -11.09400 2.2188第三節(jié)、繪圖簡介? MATLAB 提供了豐富的繪圖功能help grap

29、h2d 可得到所有畫二維圖形的命令help graph3d 可得到所有畫三維圖形的命令 下面介紹常用的二維圖形命令1、基本的繪圖命令plot (x1,y1,option1,x2,y2,option2,) x1,y1 給出的數(shù)據(jù)分別為 x,y 軸坐標(biāo)值, option1 為選項參數(shù),以逐點連折線的方式 繪制 1個二維圖形;同時類似地繪制第二個二維圖形, 等。這是 plot 命令的完全格式,在實際應(yīng)用中可以根據(jù)需要進行簡化。比如: plot(x,y);plot(x,y,option)選項參數(shù) option 定義了圖形曲線的顏色、 線型及標(biāo)示符號, 它由一對單引號括起來 例exp2_3.m%plot

30、 繪圖命令的使用clc%清屏命令clear %清除工作空間中所有變量%定義時間范圍t=0:pi/20:9*pi;y1=sin(t);y2=cos(t);plot(t,y1,t,y2)2、 選擇圖像figure (1); figure (2);.;figure(n) 打開不同的圖形窗口,以便繪制不同的圖形。3、 grid on :在所畫出的圖形坐標(biāo)中加入柵格grid off :除去圖形坐標(biāo)中的柵格4、 hold on :把當(dāng)前圖形保持在屏幕上不變,同時允許在這個坐標(biāo)內(nèi)繪制另外一個 圖形。hold off:使新圖覆蓋舊的圖形例 exp2_4.m close all clc clear%定義時間范圍

31、t=0:pi/20:9*pi;figure(1)%選擇圖像plot(t,sin(t),r:*)grid on%在所畫出的圖形坐標(biāo)中添加?xùn)鸥?,注意用在plot 之后grid off%刪除柵格figure(2)plot(t,cos(t)grid ongrid off%刪除柵格5、設(shè)定軸的范圍axis (xmin xmax ymin ymax )例 exp2_5.maxis( equal 將)x 坐標(biāo)軸和 y 坐標(biāo)軸的單位刻度大小調(diào)整為一樣。6、 文字標(biāo)示?text(x,y, 字符串 )在圖形的指定坐標(biāo)位置(x,y)處,標(biāo)示單引號括起來的字符串。?gtext( 字符串 ) 利用鼠標(biāo)在圖形的某一位置標(biāo)

32、示字符串。?title( 字符串 ) 在所畫圖形的最上端顯示說明該圖形標(biāo)題的字符串。?xlabel( 字符串 ,) ylabel( 字符串 )設(shè)置 x,y 坐標(biāo)軸的名稱。?輸入特殊的文字需要用反斜杠( )開頭。7、 legend(字符串 1字符串 2 , 字符串 n)在屏幕上開啟一個小視窗, 然后依據(jù)繪圖命令的先后次序, 用對應(yīng)的字符串區(qū)分圖 形上的線。例 exp2_5_.m %繪制單位圓 clear close all clc%定義時間范圍 t=0:0.01:2*pi;x=sin(t);y=cos(t);plot(x,y)axis(-1.5 1.5 -1.5 1.5)%限定 x 軸和 y 軸

33、的顯示范圍grid onaxis(equal)8、subplot (mnk ):分割圖形顯示窗口m:上下分割個數(shù),n:左右分割個數(shù),k:子圖編號例 exp2_6.m%curve interpolationys=0 0.9 0.6 1 0 0.1 -0.3 -0.7 -0.9 -0.2; %xs=0:length(ys)-1; % 已有的樣本點 xsx=0:0.1:length(ys)-1;% 新的樣本點 xy1=interp1(xs,ys,x,nearest); %y2=interp1(xs,ys,x,linear); %y3=interp1(xs,ys,x,spline); %y4=inte

34、rp1(xs,ys,x,cubic); %plot(xs,ys,+k,x,y1,:r,x,y2,-m,x,y3,-c,x,y4,-b) %同方法產(chǎn)生的曲線legend(sampled point,nearest,linear,spline,cubic)9、semilogx :繪制以 x 軸為對數(shù)坐標(biāo)(以 10 為底),y 軸為線性坐標(biāo)的半對數(shù)坐標(biāo) 圖形。semilogy :繪制以 y 軸為對數(shù)坐標(biāo)(以 10 為底),x 軸為線性坐標(biāo)的半對數(shù)坐 標(biāo)圖形。例 exp2_17.m%*%exp2_17.m%功能:半對數(shù)坐標(biāo)圖形與線性坐標(biāo)圖形的比較%*clearcloseclcx=0:0.1:1;y=1

35、0.Ax;subplot(211)semilogy(x,y)title(semilogarithmic scales gragh)grid onsubplot(212)plot(x,y)title(linear scales graph)grid on10、了解應(yīng)用型繪圖指令:可用于數(shù)值統(tǒng)計分析或離散數(shù)據(jù)處理bax(x,y);hist(y,x)stairs ( x,y ); stem (x,y)例 exp2_7.mclcclear%繪制對應(yīng)于每個輸入 X 的輸出 y 的高度條形圖已有的樣本點 ys分別繪制不插值產(chǎn)生新的樣本點 y1插值產(chǎn)生新的樣本點 y2插值產(chǎn)生新的樣本點 y3插值產(chǎn)生新的樣本

36、點 y4subplot(221)X=1 2 3 4 5 6 7 8 9 10;y=5 6 3 4 8 1 10 3 5 6;bar(X,y)%繪制 x1 在以 y1 為中心的區(qū)間中分布的個數(shù)條形圖subplot(222) x1=randn(1,1000);% 生成 1 000 個各隨機數(shù)y1=-3:0.1:3; hist(x1,y1)%繪制 y2 對應(yīng)于 x2 的梯形圖subplot(223) x2=0:0.1:10;y2=1./(x2.A3-2.*x2+4);stairs(x2,y2)%繪制 y3 對應(yīng)于 x3 的散點圖subplot(224)x3=0:0.1:10;y3=1./(x2.A3

37、-2.*x2+4); stem(x3,y3)11 、一點補充說明? 對于圖形的屬性編輯同樣可以通過在圖形窗口上直接進行 ?但圖形窗口關(guān)閉之后編輯結(jié)果不會保存 第四節(jié) MATLAB?序設(shè)計入門一、 MATLBA 程序的基本設(shè)計原則1、 后面的內(nèi)容是程序的注解,要善于運用注解使程序更具可讀性。2、 養(yǎng)成在主程序開頭用 clear 指令清除變量的習(xí)慣,以消除工作空間中其他變量對程 序運行的影響。但注意在子程序中不要用 clear。3、參數(shù)值要集中放在程序的開始部分,以便維護。要充分利用 MATLAB 工具箱提 供的指令來執(zhí)行所要進行的運算, 在語句行之后輸入分號使其及中間結(jié)果不在屏 幕上顯示,以提高

38、執(zhí)行速度。4、 input 指令可以用來輸入一些臨時的數(shù)據(jù);而對于大量參數(shù),貝 U 通過建立一個存 儲參數(shù)的子程序,在主程序中用子程序的名稱來調(diào)用。5、 程序盡量模塊化, 也就是采用主程序調(diào)用子程序的方法, 將所有子程序合并在一起來執(zhí)行全部的操作。6 充分利用 Debugger 來進行程序的調(diào)試(設(shè)置斷點、單步執(zhí)行、連續(xù)執(zhí)行),并利 用其他工具箱或圖形用戶界面(GUI)的設(shè)計技巧,將設(shè)計結(jié)果集成到一起。7、 設(shè)置好 MATLAB 的工作路徑,以便程序運行。8、 MATLAB 程序的基本組成結(jié)構(gòu)%說明清除命令:清除 workspace的變量和圖形(clear,close )定義變量:包括全局變量

39、的聲明及參數(shù)值的設(shè)定逐行執(zhí)行命令:指 MATLAB 提供的運算指令或工具箱. 提供的專用命令控制循環(huán):包含 for,if then,switch,while 等語句逐行執(zhí)行命令 Iend繪圖命令:將運算結(jié)果繪制出來?當(dāng)然更復(fù)雜程序還需要調(diào)用子程序,或與 simulink 以及其他應(yīng)用程序結(jié)合起來。二、M 文件的編輯及 MATLABT 作路徑的設(shè)置?進入 MATLAB 的 Editor/Debugger 窗口來編輯程序?在編輯環(huán)境中,文字的不同顏色顯示表明文字的不同屬性。綠色:注解;黑色:程序主體;紅色:屬性值的設(shè)定;藍(lán)色:控制流程。?在運行程序之前,必須設(shè)置好 MATLAB 的工作路徑,使得所

40、要運行的程序及運行 程序所需要的其他文件處在當(dāng)前目錄之下,只有這樣,才可以使程序得以正常運 行。否則可能導(dǎo)致無法讀取某些系統(tǒng)文件或數(shù)據(jù),從而程序無法執(zhí)行。?通過 cd 指令在命令窗口中可以更改、顯示當(dāng)前工作路徑。?通過路徑瀏覽器(path browse)也可以進行設(shè)置三、MATLAB 勺程序類型MATLAB 勺程序類型有三種,一種是在命令窗口下執(zhí)行的腳本M 文件;另外一種是可以存取的 M 文件,也即程序文件;最后一種是函數(shù)(function)文件。1 腳本 M 文件在命令窗口中輸入并執(zhí)行,它所用的變量都要在工作空間中獲取,不需要輸入輸出 參數(shù)的調(diào)用,退出 MATLA 后就釋放了。2、 程序文件

41、?以.m 格式進行存取,包含一連串的 MATLAB 指令和必要的注解。需要在工作空間 中創(chuàng)建并獲取變量,也就是說處理的數(shù)據(jù)為命令窗口中的數(shù)據(jù),沒有輸入?yún)?shù), 也不會返回參數(shù)。?程序運行時只需在工作空間中鍵入其名稱即可。3、 函數(shù)文件例 myhilb1.mmyhilb.m?與在命令窗口中輸入命令一樣,函數(shù)接受輸入?yún)?shù),然后執(zhí)行并輸出結(jié)果。用 help 命令可以顯示它的注釋說明。?具有標(biāo)準(zhǔn)的基本結(jié)構(gòu)。( 1)函數(shù)定義行(關(guān)鍵字 function )?functionout1,out2,.=filename(in1,in2,.)?輸入和輸出 (返回) 的參數(shù)個數(shù)分別由 nargin 和 nargou

42、t 兩個 MATLAB 保留的變量 來給出。( 2)第一行幫助行,即 H1 行?以( %)開頭,作為 lookfor 指令搜索的行( 3)函數(shù)體說明及有關(guān)注解?以( %)開頭,用以說明函數(shù)的作用及有關(guān)內(nèi)容?如果不希望顯示某段信息,可在它的前面加空行( 4)函數(shù)體語句?函數(shù)體內(nèi)使用的除返回和輸入變量這些在 function 語句中直接引用的變量以外的 所有變量都是局部變量, 即在該函數(shù)返回之后, 這些變量會自動在 MATLAB 的工 作空間中清除掉。如果希望這些中間變量成為在整個程序中都起作用的變量,則 可以將它們設(shè)置為全局變量。functionA,B=myhilb(n,m)% MYHILB 生

43、成一個 Hilbert 矩陣% A,B=myhilb(n,m)% where% n,m are size of the Hilbert matrix,if only one% argument given,then a square matrix is generated% A is the Hilbert matrix% B:if two matrices to be returned,B is assigned to% A*A% 2001/12/1if nargin=1,m=n;endfor i=1:nfor j=1:mA(i,j)=1/(i+j-1);endendif (nargout=

44、2),B=A*A;end四、聲明子程序(函數(shù)程序)變量1、 子程序與主程序之間的數(shù)據(jù)是通過參數(shù)進行傳遞的, 子程序應(yīng)用主程序傳遞來的 參數(shù)進行計算后,將結(jié)果返回主程序。例 exp2_9.m2、 如果一個函數(shù)內(nèi)的變量沒有特別聲明, 那么這個變量只在函數(shù)內(nèi)部使用, 即為 局部變量。如果兩個或多個函數(shù)共用一個變量(或者說在子程序中也要用到主程序 中的變量,注意不是參數(shù)) ,那么可以用 global 來將它聲明為全局變量。例 exp2_10.m全局變量的使用可以減少參數(shù)傳遞,合理利用全局變量可以提高程序執(zhí)行的效 率。%主程序 exp2_9.m a=input(please input value of

45、 a=); b=input(please input value of b=);c=sumhe(a,b)% 在此例中,主程序 exp2_9.m 設(shè)定了兩個參數(shù) a 和 b 來調(diào)用%子程序 sumhe.m(為一個函數(shù)文件),% 所以執(zhí)行主程序時,子程序就會調(diào)用主程序傳遞過來的%a 和 b 值進行計算,再將結(jié)果返回主程序。%子程序 sumhe.m% function result=sumhe(a,b)% sumhe(a,b) sum the serial of numbers from a tob% result=sum(a:b);%主程序 exp2_10.mglobal a %聲明變量 a 為全

46、局變量x=1:100;a=3;c=prods(x) %調(diào)用子程序 prods.m%子程序 prods.m% function result=prods(x)% global a% result=a*sum(x);%聲明了與主程序一樣的全局變量a,以便在子程序中可以%使用主程序中定義的變量五、字符串及其宏命令? 字符串要用單引號并用括號括在里面。如: disp( text string )disp 字符串顯示命令text string?在單引號里邊的字符串可以作為矢量或矩陣的元素。使用disp 命令或輸入變量名就可以顯示它們表示的字符串。如:a=this is a;text string? Al

47、l rows in the bracketed expression must have the same number of columnS 元素1 含 9 個字符,包括空格;元素 2 含有 11 個字符;因此只要在元素 1 中加入 2 個空 格即可解決問題)aa=this is a ;text string disp(aa)aa =aa=this is athis is atext stringtext string?宏是 MATLA 語言用在常用命令部分的縮寫。它可以被存儲用于建立M 文件的一部分。宏命令采用字符串,并使用 eval 命令去執(zhí)行宏命令。下例是采用宏命令計算 階乘的例子。f

48、ct= prod(1:n) ; 求 10 的階乘 n=10;eval(fct)ans=3628800六、常用的編程命令(例 exp2_8.m)?pause 停止 m 文件的執(zhí)行直至有鍵按下。pause(n 將使程序暫停 n 秒。?echo on/off:控制是否在屏幕上顯示程序內(nèi)容。?keyboard:停止程序執(zhí)行,把控制權(quán)交給鍵盤。輸入 return 并回車后繼續(xù)程序執(zhí)行。 ?x=input(prompt) :把輸入的字符串作為提示符,等待使用者輸入一個響應(yīng),然后 把它賦值到 x。?echo off % 不顯示程序內(nèi)容?clear?clc?a=4;?b=6?disp(暫停,請按任意鍵繼續(xù))% disp 指令可以用來顯示字符 ?pause % 暫停,直到用戶按任意鍵?echo on % 顯示程序內(nèi)容,注意 matlab 默認(rèn)是不顯示?c=a+b?% 暫時把控制權(quán)交給鍵盤(在命令窗口中出現(xiàn) k 提示符 ),?%輸入 return,回車后退出,繼續(xù)執(zhí)行下面的語句。?keyboard?d=input(Enter the value of d=);%提示用戶輸入 d 的值?e=a*24+b*8+d*6-c?f=e/d?disp(work pause 30 sec on d) % dis 指令可以用來顯示字符?pause(10) %暫停 10 秒?disp(f) % 顯示指定變量的結(jié)果

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論