




已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章 MATLAB系統(tǒng)環(huán)境 例、用簡短命令計(jì)算并繪制在0x6范圍內(nèi)的sin(2x)、sinx2、sin2x。x=linspace(0,6,1000)y1=sin(2*x),y2=sin(x.2),y3=(sin(x).2;plot(x,y1,x, y2,x, y3)例、繞地球運(yùn)動的飛行物x,y,z=sphere(50);mesh(x,y,z);hold onv=-6,6,-6,6,-6,6;axis(v);axis(off)t= 0:pi/1000:200*pi;x=6*sin(t);y=2*cos(t);z=zeros(size(t);comet3(x,y,z)MATLAB語言的特點(diǎn):語言簡潔緊湊,語法限制不嚴(yán),程序設(shè)計(jì)自由度大,可移植性好 運(yùn)算符、庫函數(shù)豐富 圖形功能強(qiáng)大 界面友好、編程效率高 擴(kuò)展性強(qiáng)MATLAB語言的功能: 強(qiáng)大的數(shù)值(矩陣)運(yùn)算功能 廣泛的符號運(yùn)算功能 高級與低級兼?zhèn)涞膱D形功能(計(jì)算結(jié)果的可視化功能) 可靠的容錯功能 應(yīng)用靈活的兼容與接口功能 信息量豐富的聯(lián)機(jī)檢索功能1.1.2 MATLAB的主要功能1數(shù)值計(jì)算和符號計(jì)算功能MATLAB以矩陣作為數(shù)據(jù)操作的基本單位,還提供了十分豐富的數(shù)值計(jì)算函數(shù)。MATLAB和著名的符號計(jì)算語言Maple相結(jié)合,使得MATLAB具有符號計(jì)算功能。2繪圖功能MATLAB提供了兩個(gè)層次的繪圖操作:一種是對圖形句柄進(jìn)行的低層繪圖操作,另一種是建立在低層繪圖操作之上的高層繪圖操作。3編程語言MATLAB具有程序結(jié)構(gòu)控制、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)、輸入輸出、面向?qū)ο蟮瘸绦蛘Z言特征,而且簡單易學(xué)、編程效率高。4MATLAB工具箱 MATLAB包含兩部分內(nèi)容:基本部分和各種可選的工具箱。MATLAB工具箱分為兩大類:功能性工具箱和學(xué)科性工具箱。例1-1 繪制正弦曲線和余弦曲線。x=0:0.5:360*pi/180;plot(x,sin(x),x,cos(x);例1-2 求方程 3x4+7x3 +9x2-23=0的全部根。p=3,7,9,0,-23; %建立多項(xiàng)式系數(shù)向量x=roots(p) %求根例1-3 求積分quad(x.*log(1+x),0,1)例1-4 求解線性方程組。a=2,-3,1;8,3,2;45,1,-9; b=4;2;17; x=inv(a)*b一般來說,一個(gè)命令行輸入一條命令,命令行以回車結(jié)束。但一個(gè)命令行也可以輸入若干條命令,各命令之間以逗號分隔,若前一命令后帶有分號,則逗號可以省略。例如p=15,m=35p=15;m=35如果一個(gè)命令行很長,一個(gè)物理行之內(nèi)寫不下,可以在第一個(gè)物理行之后加上3個(gè)小黑點(diǎn)并按下回車鍵,然后接著下一個(gè)物理行繼續(xù)寫命令的其他部分。3個(gè)小黑點(diǎn)稱為續(xù)行符,即把下面的物理行看作該行的邏輯繼續(xù)。在MATLAB里,有很多的控制鍵和方向鍵可用于命令行的編輯。2MATLAB的搜索路徑當(dāng)用戶在MATLAB命令窗口輸入一條命令后,MATLAB按照一定次序?qū)ふ蚁嚓P(guān)的文件?;镜乃阉鬟^程是:(1) 檢查該命令是不是一個(gè)變量。(2) 檢查該命令是不是一個(gè)內(nèi)部函數(shù)。(3) 檢查該命令是否當(dāng)前目錄下的M文件。(4) 檢查該命令是否MATLAB搜索路徑中其他目錄下的M文件。1.4.2 幫助命令MATLAB幫助命令包括help、lookfor以及模糊查詢。1help命令在MATLAB 6.5命令窗口中直接輸入help命令將會顯示當(dāng)前幫助系統(tǒng)中所包含的所有項(xiàng)目,即搜索路徑中所有的目錄名稱。同樣,可以通過help加函數(shù)名來顯示該函數(shù)的幫助說明。2lookfor命令help命令只搜索出那些關(guān)鍵字完全匹配的結(jié)果,lookfor命令對搜索范圍內(nèi)的M文件進(jìn)行關(guān)鍵字搜索,條件比較寬松。lookfor命令只對M文件的第一行進(jìn)行關(guān)鍵字搜索。若在lookfor命令加上-all選項(xiàng),則可對M文件進(jìn)行全文搜索。3模糊查詢MATLAB 6.0以上的版本提供了一種類似模糊查詢的命令查詢方法,用戶只需要輸入命令的前幾個(gè)字母,然后按Tab鍵,系統(tǒng)就會列出所有以這幾個(gè)字母開頭的命令。第二章MATLAB矩陣及其運(yùn)算2.1 變量和數(shù)據(jù)操作2.1.1 變量與賦值1變量命名在MATLAB 中,變量名是以字母開頭,后接字母、數(shù)字或下劃線的字符序列,最多63個(gè)字符。在MATLAB中,變量名區(qū)分字母的大小寫。2賦值語句(1) 變量=表達(dá)式 (2) 表達(dá)式其中表達(dá)式是用運(yùn)算符將有關(guān)運(yùn)算量連接起來的式子,其結(jié)果是一個(gè)矩陣。例2-1 計(jì)算表達(dá)式的值,并顯示計(jì)算結(jié)果。在MATLAB命令窗口輸入命令:x=1+2i;y=3-sqrt(17);z=(cos(abs(x+y)-sin(78*pi/180)/(x+abs(y)其中pi和i都是MATLAB預(yù)先定義的變量,分別代表代表圓周率和虛數(shù)單位。輸出結(jié)果是:z = -0.3488 + 0.3286i2.1.2預(yù)定義變量2.1.3 內(nèi)存變量的管理1內(nèi)存變量的刪除與修改MATLAB工作空間窗口專門用于內(nèi)存變量的管理。在工作空間窗口中可以顯示所有內(nèi)存變量的屬性。當(dāng)選中某些變量后,再單擊Delete按鈕,就能刪除這些變量。當(dāng)選中某些變量后,再單擊Open按鈕,將進(jìn)入變量編輯器。通過變量編輯器可以直接觀察變量中的具體元素,也可修改變量中的具體元素。在MATLAB工作空間中,還駐留幾個(gè)由系統(tǒng)本身定義的變量。例如,用pi表示圓周率的近似值,用i,j表示虛數(shù)單位。預(yù)定義變量有特定的含義,在使用時(shí),應(yīng)盡量避免對這些變量重新賦值。2內(nèi)存變量文件利用MAT文件可以把當(dāng)前MATLAB工作空間中的一些有用變量長久地保留下來,擴(kuò)展名是.mat。MAT文件的生成和裝入由save和load命令來完成。常用格式為:save 文件名 變量名表 -append-asciiload 文件名 變量名表 -ascii2.1.4 MATLAB常用數(shù)學(xué)函數(shù)MATLAB提供了許多數(shù)學(xué)函數(shù),函數(shù)的自變量規(guī)定為矩陣變量,運(yùn)算法則是將函數(shù)逐項(xiàng)作用于矩陣的元素上,因而運(yùn)算的結(jié)果是一個(gè)與自變量同維數(shù)的矩陣。函數(shù)使用說明:(1) 三角函數(shù)以弧度為單位計(jì)算。(2) abs函數(shù)可以求實(shí)數(shù)的絕對值、復(fù)數(shù)的模、字符串的ASCII碼值。(3) 用于取整的函數(shù)有fix、floor、ceil、round,要注意它們的區(qū)別。(4) rem與mod函數(shù)的區(qū)別。rem(x,y)和mod(x,y)要求x,y必須為相同大小的實(shí)矩陣或?yàn)闃?biāo)量。2.1.5 數(shù)據(jù)的輸出格式 MATLAB用十進(jìn)制數(shù)表示一個(gè)常數(shù),具體可采用日常記數(shù)法和科學(xué)記數(shù)法兩種表示方法。 在一般情況下,MATLAB內(nèi)部每一個(gè)數(shù)據(jù)元素都是用雙精度數(shù)來表示和存儲的。數(shù)據(jù)輸出時(shí)用戶可以用format命令設(shè)置或改變數(shù)據(jù)輸出格式。format命令的格式為: format 格式符其中格式符決定數(shù)據(jù)的輸出格式2.2 MATLAB矩陣?yán)?-2 利用M文件建立MYMAT矩陣。(1) 啟動有關(guān)編輯程序或MATLAB文本編輯器,并輸入待建矩陣: (2) 把輸入的內(nèi)容以純文本方式存盤(設(shè)文件名為mymatrix.m)。 (3) 在MATLAB命令窗口中輸入mymatrix,即運(yùn)行該M文件,就會自動建立一個(gè)名為MYMAT的矩陣,可供以后使用。3利用冒號表達(dá)式建立一個(gè)向量 冒號表達(dá)式可以產(chǎn)生一個(gè)行向量,一般格式是: e1:e2:e3其中e1為初始值,e2為步長,e3為終止值。在MATLAB中,還可以用linspace函數(shù)產(chǎn)生行向量。其調(diào)用格式為:linspace(a,b,n)其中a和b是生成向量的第一個(gè)和最后一個(gè)元素,n是元素總數(shù)。顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價(jià)。4建立大矩陣大矩陣可由方括號中的小矩陣或向量建立起來。在MATLAB中,矩陣元素按列存儲,先第一列,再第二列,依次類推。例如A=1,2,3;4,5,6;A(3)ans = 2顯然,序號(Index)與下標(biāo)(Subscript )是一一對應(yīng)的,以mn矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。其相互轉(zhuǎn)換關(guān)系也可利用sub2ind和ind2sub函數(shù)求得。2矩陣拆分 (1) 利用冒號表達(dá)式獲得子矩陣 A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。 A(i:i+m,:)表示取A矩陣第ii+m行的全部元素;A(:,k:k+m)表示取A矩陣第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第ii+m行內(nèi),并在第kk+m列中的所有元素。此外,還可利用一般向量和end運(yùn)算符來表示矩陣下標(biāo),從而獲得子矩陣。end表示某一維的末尾元素下標(biāo)。2.2.3 特殊矩陣1通用的特殊矩陣常用的產(chǎn)生通用特殊矩陣的函數(shù)有:zeros:產(chǎn)生全0矩陣(零矩陣)。ones:產(chǎn)生全1矩陣(幺矩陣)。eye:產(chǎn)生單位矩陣。rand:產(chǎn)生01間均勻分布的隨機(jī)矩陣。randn:產(chǎn)生均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布隨機(jī)矩陣。例2-3 分別建立33、32和與矩陣A同樣大小的零矩陣。(1) 建立一個(gè)33零矩陣。zeros(3) (2) 建立一個(gè)32零矩陣。zeros(3,2) (3) 設(shè)A為23矩陣,則可以用zeros(size(A)建立一個(gè)與矩陣A同樣大小零矩陣。A=1 2 3;4 5 6; %產(chǎn)生一個(gè)23階矩陣Azeros(size(A) %產(chǎn)生一個(gè)與矩陣A同樣大小的零矩陣?yán)?-4 建立隨機(jī)矩陣:(1) 在區(qū)間20,50內(nèi)均勻分布的5階隨機(jī)矩陣。(2) 均值為0.6、方差為0.1的5階正態(tài)分布隨機(jī)矩陣。命令如下:x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*randn(5)此外,常用的函數(shù)還有reshape(A,m,n),它在矩陣總元素保持不變的前提下,將矩陣A重新排成mn的二維矩陣。2用于專門學(xué)科的特殊矩陣 (1) 魔方矩陣魔方矩陣有一個(gè)有趣的性質(zhì),其每行、每列及兩條對角線上的元素和都相等。對于n階魔方陣,其元素由1,2,3,n2共n2個(gè)整數(shù)組成。MATLAB提供了求魔方矩陣的函數(shù)magic(n),其功能是生成一個(gè)n階魔方陣。例2-5 將101125等25個(gè)數(shù)填入一個(gè)5行5列的表格中,使其每行每列及對角線的和均為565。M=100+magic(5)(2) 范得蒙矩陣范得蒙(Vandermonde)矩陣最后一列全為1,倒數(shù)第二列為一個(gè)指定的向量,其他各列是其后列與倒數(shù)第二列的點(diǎn)乘積。可以用一個(gè)指定向量生成一個(gè)范得蒙矩陣。在MATLAB中,函數(shù)vander(V)生成以向量V為基礎(chǔ)向量的范得蒙矩陣。例如,A=vander(1;2;3;5)即可得到上述范得蒙矩陣。(3) 希爾伯特矩陣在MATLAB中,生成希爾伯特矩陣的函數(shù)是hilb(n)。使用一般方法求逆會因?yàn)樵紨?shù)據(jù)的微小擾動而產(chǎn)生不可靠的計(jì)算結(jié)果。MATLAB中,有一個(gè)專門求希爾伯特矩陣的逆的函數(shù)invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。例2-6 求4階希爾伯特矩陣及其逆矩陣。命令如下:format rat %以有理形式輸出H=hilb(4)H=invhilb(4)(4) 托普利茲矩陣托普利茲(Toeplitz)矩陣除第一行第一列外,其他每個(gè)元素都與左上角的元素相同。生成托普利茲矩陣的函數(shù)是toeplitz(x,y),它生成一個(gè)以x為第一列,y為第一行的托普利茲矩陣。這里x, y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個(gè)對稱的托普利茲矩陣。例如T=toeplitz(1:6)(5) 伴隨矩陣MATLAB生成伴隨矩陣的函數(shù)是compan(p),其中p是一個(gè)多項(xiàng)式的系數(shù)向量,高次冪系數(shù)排在前,低次冪排在后。例如,為了求多項(xiàng)式的x3-7x+6的伴隨矩陣,可使用命令:p=1,0,-7,6;compan(p)(6) 帕斯卡矩陣我們知道,二次項(xiàng)(x+y)n展開后的系數(shù)隨n的增大組成一個(gè)三角形表,稱為楊輝三角形。由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。函數(shù)pascal(n)生成一個(gè)n階帕斯卡矩陣?yán)?-7 求(x+y)5的展開式。在MATLAB命令窗口,輸入命令:pascal(6)矩陣次對角線上的元素1,5,10,10,5,1即為展開式的系數(shù)。2.3 MATLAB運(yùn)算 2.3.1算術(shù)運(yùn)算1基本算術(shù)運(yùn)算 MATLAB的基本算術(shù)運(yùn)算有:(加)、(減)、*(乘)、/(右除)、(左除)、(乘方)。注意,運(yùn)算是在矩陣意義下進(jìn)行的,單個(gè)數(shù)據(jù)的算術(shù)運(yùn)算只是一種特例。(1) 矩陣加減運(yùn)算 假定有兩個(gè)矩陣A和B,則可以由A+B和A-B實(shí)現(xiàn)矩陣的加減運(yùn)算。運(yùn)算規(guī)則是:若A和B矩陣的維數(shù)相同,則可以執(zhí)行矩陣的加減運(yùn)算,A和B矩陣的相應(yīng)元素相加減。如果A與B的維數(shù)不相同,則MATLAB將給出錯誤信息,提示用戶兩個(gè)矩陣的維數(shù)不匹配。(2) 矩陣乘法 假定有兩個(gè)矩陣A和B,若A為mn矩陣,B為np矩陣,則C=A*B為mp矩陣。矩陣下標(biāo)與子矩陣提取 A(m, n)提取第m行,第n列元素 A(:, n)提取第n列元素 A(m, :)提取第m行元素 A(m1:m2, n1:n2)提取第m1行到第m2行和第n1列到第n2列的所有元素 A(m:end, n)提取從第m行到最末行和第n列的子塊 A(:)得到一個(gè)長列矢量,該矢量的元素按矩陣的列進(jìn)行排列例: 修改矩陣A中元素的數(shù)值A(chǔ)=1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16;A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);則矩陣變?yōu)椋篈 = 0 2 3 4 5 7 7 8 9 10 11 12 13 14 15 1函 數(shù)功 能det計(jì)算矩陣所對應(yīng)的行列式的值diag抽取矩陣對角線元素eig求特征值和特征向量inv求矩陣的逆陣lu三角分解Poly求特征多項(xiàng)式Rank求矩陣的秩Svd奇異值分解1.求矩陣的行列式的值 X=1 2 3 0; 5 6 0 8; 9 0 11 12; 0 14 15 16;det(X)ans =-54642求矩陣的秩 X=1, 2, 3; 2, 3 -5; 4 7 1; rank(X)ans = 23求逆矩陣 X=1 2 3 0; 5 6 0 8; 9 0 11 12; 0 14 15 16; Y=inv(X)Y = 0.2299 0.0908 0.0351 -0.0717 0.1940 0.0798 -0.0659 0.0095 0.1274 -0.0835 0.0322 0.0176 -0.2892 0.0084 0.0275 0.0377Y*X%矩陣與其逆陣相乘結(jié)果是單位矩陣ans = 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 X*Y%矩陣的逆陣是唯一的ans = 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.00004矩陣分解 A=2 -1 3;1 2 1;2 4 3; L, U=lu(A) %三角分解 L = 1.0000 0 0 0.5000 0.5000 1.0000 1.0000 1.0000 0U = 2.0000 -1.0000 3.0000 0 5.0000 0 0 0 -0.5000(3) 矩陣除法在MATLAB中,有兩種矩陣除法運(yùn)算:和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則AB和B/A運(yùn)算可以實(shí)現(xiàn)。AB等效于A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效于A矩陣的逆右乘B矩陣,也就是B*inv(A)。對于含有標(biāo)量的運(yùn)算,兩種除法運(yùn)算的結(jié)果相同,如3/4和43有相同的值,都等于0.75。又如,設(shè)a=10.5,25,則a/5=5a=2.1000 5.0000。對于矩陣來說,左除和右除表示兩種不同的除數(shù)矩陣和被除數(shù)矩陣的關(guān)系。對于矩陣運(yùn)算,一般ABB/A。例:求解線形方程組(4) 矩陣的乘方 一個(gè)矩陣的乘方運(yùn)算可以表示成Ax,要求A為方陣,x為標(biāo)量。2點(diǎn)運(yùn)算 在MATLAB中,有一種特殊的運(yùn)算,因?yàn)槠溥\(yùn)算符是在有關(guān)算術(shù)運(yùn)算符前面加點(diǎn),所以叫點(diǎn)運(yùn)算。點(diǎn)運(yùn)算符有.*、./、.和.。兩矩陣進(jìn)行點(diǎn)運(yùn)算是指它們的對應(yīng)元素進(jìn)行相關(guān)運(yùn)算,要求兩矩陣的維參數(shù)相同。2.3.2 關(guān)系運(yùn)算 MATLAB提供了6種關(guān)系運(yùn)算符:(小于)、(大于)、=(大于或等于)、=(等于)、=(不等于)。它們的含義不難理解,但要注意其書寫方法與數(shù)學(xué)中的不等式符號不盡相同。關(guān)系運(yùn)算符的運(yùn)算法則為: (1) 當(dāng)兩個(gè)比較量是標(biāo)量時(shí),直接比較兩數(shù)的大小。若關(guān)系成立,關(guān)系表達(dá)式結(jié)果為1,否則為0。 (2) 當(dāng)參與比較的量是兩個(gè)維數(shù)相同的矩陣時(shí),比較是對兩矩陣相同位置的元素按標(biāo)量關(guān)系運(yùn)算規(guī)則逐個(gè)進(jìn)行,并給出元素比較結(jié)果。最終的關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。(3) 當(dāng)參與比較的一個(gè)是標(biāo)量,而另一個(gè)是矩陣時(shí),則把標(biāo)量與矩陣的每一個(gè)元素按標(biāo)量關(guān)系運(yùn)算規(guī)則逐個(gè)比較,并給出元素比較結(jié)果。最終的關(guān)系運(yùn)算的結(jié)果是一個(gè)維數(shù)與原矩陣相同的矩陣,它的元素由0或1組成。例2-8 產(chǎn)生5階隨機(jī)方陣A,其元素為10,90區(qū)間的隨機(jī)整數(shù),然后判斷A的元素是否能被3整除。 (1) 生成5階隨機(jī)方陣A。A=fix(90-10+1)*rand(5)+10) (2) 判斷A的元素是否可以被3整除。 P=rem(A,3)=0其中,rem(A,3)是矩陣A的每個(gè)元素除以3的余數(shù)矩陣。此時(shí),0被擴(kuò)展為與A同維數(shù)的零矩陣,P是進(jìn)行等于(=)比較的結(jié)果矩陣。2.3.3 邏輯運(yùn)算 MATLAB提供了3種邏輯運(yùn)算符:&(與)、|(或)和(非)。 邏輯運(yùn)算的運(yùn)算法則為: (1) 在邏輯運(yùn)算中,確認(rèn)非零元素為真,用1表示,零元素為假,用0表示。 (2) 設(shè)參與邏輯運(yùn)算的是兩個(gè)標(biāo)量a和b,那么, a&b a,b全為非零時(shí),運(yùn)算結(jié)果為1,否則為0。 a|b a,b中只要有一個(gè)非零,運(yùn)算結(jié)果為1。 a 當(dāng)a是零時(shí),運(yùn)算結(jié)果為1;當(dāng)a非零時(shí),運(yùn)算結(jié)果為0。(3) 若參與邏輯運(yùn)算的是兩個(gè)同維矩陣,那么運(yùn)算將對矩陣相同位置上的元素按標(biāo)量規(guī)則逐個(gè)進(jìn)行。最終運(yùn)算結(jié)果是一個(gè)與原矩陣同維的矩陣,其元素由1或0組成。 (4) 若參與邏輯運(yùn)算的一個(gè)是標(biāo)量,一個(gè)是矩陣,那么運(yùn)算將在標(biāo)量與矩陣中的每個(gè)元素之間按標(biāo)量規(guī)則逐個(gè)進(jìn)行。最終運(yùn)算結(jié)果是一個(gè)與矩陣同維的矩陣,其元素由1或0組成。(5) 邏輯非是單目運(yùn)算符,也服從矩陣運(yùn)算規(guī)則。(6) 在算術(shù)、關(guān)系、邏輯運(yùn)算中,算術(shù)運(yùn)算優(yōu)先級最高,邏輯運(yùn)算優(yōu)先級最低。例2-9 建立矩陣A,然后找出大于4的元素的位置。(1) 建立矩陣A。A=4,-65,-54,0,6;56,0,67,-45,0 (2) 找出大于4的元素的位置。find(A4)2.4 矩陣分析2.4.1 對角陣與三角陣1對角陣只有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數(shù)量矩陣,對角線上的元素都為1的對角矩陣稱為單位矩陣。(1) 提取矩陣的對角線元素設(shè)A為mn矩陣,diag(A)函數(shù)用于提取矩陣A主對角線元素,產(chǎn)生一個(gè)具有min(m,n)個(gè)元素的列向量。diag(A)函數(shù)還有一種形式diag(A,k),其功能是提取第k條對角線的元素。(2) 構(gòu)造對角矩陣設(shè)V為具有m個(gè)元素的向量,diag(V)將產(chǎn)生一個(gè)mm對角矩陣,其主對角線元素即為向量V的元素。diag(V)函數(shù)也有另一種形式diag(V,k),其功能是產(chǎn)生一個(gè)nn(n=m+)對角陣,其第k條對角線的元素即為向量V的元素。例2-10 先建立55矩陣A,然后將A的第一行元素乘以1,第二行乘以2,第五行乘以5。A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;.11,18,25,2,19;D=diag(1:5);D*A %用D左乘A,對A的每行乘以一個(gè)指定常數(shù)2三角陣三角陣又進(jìn)一步分為上三角陣和下三角陣,所謂上三角陣,即矩陣的對角線以下的元素全為0的一種矩陣,而下三角陣則是對角線以上的元素全為0的一種矩陣。(1) 上三角矩陣求矩陣A的上三角陣的MATLAB函數(shù)是triu(A)。triu(A)函數(shù)也有另一種形式triu(A,k),其功能是求矩陣A的第k條對角線以上的元素。例如,提取矩陣A的第2條對角線以上的元素,形成新的矩陣B。(2) 下三角矩陣在MATLAB中,提取矩陣A的下三角矩陣的函數(shù)是tril(A)和tril(A,k),其用法與提取上三角矩陣的函數(shù)triu(A)和triu(A,k)完全相同。2.4.2 矩陣的轉(zhuǎn)置與旋轉(zhuǎn)1矩陣的轉(zhuǎn)置轉(zhuǎn)置運(yùn)算符是單撇號()。2矩陣的旋轉(zhuǎn)利用函數(shù)rot90(A,k)將矩陣A旋轉(zhuǎn)90的k倍,當(dāng)k為1時(shí)可省略。3矩陣的左右翻轉(zhuǎn)對矩陣實(shí)施左右翻轉(zhuǎn)是將原矩陣的第一列和最后一列調(diào)換,第二列和倒數(shù)第二列調(diào)換,依次類推。MATLAB對矩陣A實(shí)施左右翻轉(zhuǎn)的函數(shù)是fliplr(A)。4矩陣的上下翻轉(zhuǎn)MATLAB對矩陣A實(shí)施上下翻轉(zhuǎn)的函數(shù)是flipud(A)。2.4.3 矩陣的逆與偽逆1矩陣的逆對于一個(gè)方陣A,如果存在一個(gè)與其同階的方陣B,使得:AB=BA=I (I為單位矩陣)則稱B為A的逆矩陣,當(dāng)然,A也是B的逆矩陣。求一個(gè)矩陣的逆是一件非常煩瑣的工作,容易出錯,但在MATLAB中,求一個(gè)矩陣的逆非常容易。求方陣A的逆矩陣可調(diào)用函數(shù)inv(A)。例2-11 用求逆矩陣的方法解線性方程組。Ax=b其解為:x=A-1b2矩陣的偽逆如果矩陣A不是一個(gè)方陣,或者A是一個(gè)非滿秩的方陣時(shí),矩陣A沒有逆矩陣,但可以找到一個(gè)與A的轉(zhuǎn)置矩陣A同型的矩陣B,使得:ABA=ABAB=B此時(shí)稱矩陣B為矩陣A的偽逆,也稱為廣義逆矩陣。在MATLAB中,求一個(gè)矩陣偽逆的函數(shù)是pinv(A)。2.4.4 方陣的行列式把一個(gè)方陣看作一個(gè)行列式,并對其按行列式的規(guī)則求值,這個(gè)值就稱為矩陣所對應(yīng)的行列式的值。在MATLAB中,求方陣A所對應(yīng)的行列式的值的函數(shù)是det(A)。2.4.5 矩陣的秩與跡1矩陣的秩矩陣線性無關(guān)的行數(shù)與列數(shù)稱為矩陣的秩。在MATLAB中,求矩陣秩的函數(shù)是rank(A)。2矩陣的跡矩陣的跡等于矩陣的對角線元素之和,也等于矩陣的特征值之和。在MATLAB中,求矩陣的跡的函數(shù)是trace(A)。2.4.6 向量和矩陣的范數(shù)矩陣或向量的范數(shù)用來度量矩陣或向量在某種意義下的長度。范數(shù)有多種方法定義,其定義不同,范數(shù)值也就不同。1向量的3種常用范數(shù)及其計(jì)算函數(shù)在MATLAB中,求向量范數(shù)的函數(shù)為:(1) norm(V)或norm(V,2):計(jì)算向量V的2范數(shù)。(2) norm(V,1):計(jì)算向量V的1范數(shù)。(3) norm(V,inf):計(jì)算向量V的范數(shù)。2矩陣的范數(shù)及其計(jì)算函數(shù)MATLAB提供了求3種矩陣范數(shù)的函數(shù),其函數(shù)調(diào)用格式與求向量的范數(shù)的函數(shù)完全相同。2.4.7 矩陣的條件數(shù)在MATLAB中,計(jì)算矩陣A的3種條件數(shù)的函數(shù)是:(1) cond(A,1) 計(jì)算A的1范數(shù)下的條件數(shù)。(2) cond(A)或cond(A,2) 計(jì)算A的2范數(shù)數(shù)下的條件數(shù)。(3) cond(A,inf) 計(jì)算A的 范數(shù)下的條件數(shù)。2.4.8 矩陣的特征值與特征向量在MATLAB中,計(jì)算矩陣A的特征值和特征向量的函數(shù)是eig(A),常用的調(diào)用格式有3種:(1) E=eig(A):求矩陣A的全部特征值,構(gòu)成向量E。(2) V,D=eig(A):求矩陣A的全部特征值,構(gòu)成對角陣D,并求A的特征向量構(gòu)成V的列向量。(3) V,D=eig(A,nobalance):與第2種格式類似,但第2種格式中先對A作相似變換后求矩陣A的特征值和特征向量,而格式3直接求矩陣A的特征值和特征向量。例2-12 用求特征值的方法解方程。3x5-7x4+5x2+2x-18=0p=3,-7,0,5,2,-18;A=compan(p); %A的伴隨矩陣x1=eig(A) %求A的特征值x2=roots(p) %直接求多項(xiàng)式p的零點(diǎn)2.5 矩陣的超越函數(shù)1矩陣平方根sqrtmsqrtm(A)計(jì)算矩陣A的平方根。2矩陣對數(shù)logmlogm(A)計(jì)算矩陣A的自然對數(shù)。此函數(shù)輸入?yún)?shù)的條件與輸出結(jié)果間的關(guān)系和函數(shù)sqrtm(A)完全一樣3矩陣指數(shù)expm、expm1、expm2、expm3expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩陣指數(shù)eA。4普通矩陣函數(shù)funmfunm(A,fun)用來計(jì)算直接作用于矩陣A的由fun指定的超越函數(shù)值。當(dāng)fun取sqrt時(shí),funm(A,sqrt)可以計(jì)算矩陣A的平方根,與sqrtm(A)的計(jì)算結(jié)果一樣。2.6 字符串 在MATLAB中,字符串是用單撇號括起來的字符序列。MATLAB將字符串當(dāng)作一個(gè)行向量,每個(gè)元素對應(yīng)一個(gè)字符,其標(biāo)識方法和數(shù)值向量相同。也可以建立多行字符串矩陣。字符串是以ASCII碼形式存儲的。abs和double函數(shù)都可以用來獲取字符串矩陣所對應(yīng)的ASCII碼數(shù)值矩陣。相反,char函數(shù)可以把ASCII碼矩陣轉(zhuǎn)換為字符串矩陣。例2-13 建立一個(gè)字符串向量,然后對該向量做如下處理:(1) 取第15個(gè)字符組成的子字符串。(2) 將字符串倒過來重新排列。(3) 將字符串中的小寫字母變成相應(yīng)的大寫字母,其余字符不變。(4) 統(tǒng)計(jì)字符串中小寫字母的個(gè)數(shù)。命令如下:ch=ABc123d4e56Fg9;subch=ch(1:5) %取子字符串revch=ch(end:-1:1) %將字符串倒排k=find(ch=a&ch=z); %找小寫字母的位置ch(k)=ch(k)-(a-A); %將小寫字母變成相應(yīng)的大寫字母char(ch) length(k) %統(tǒng)計(jì)小寫字母的個(gè)數(shù)2.7 結(jié)構(gòu)數(shù)據(jù)和單元數(shù)據(jù)2.7.1 結(jié)構(gòu)數(shù)據(jù)1結(jié)構(gòu)矩陣的建立與引用結(jié)構(gòu)矩陣的元素可以是不同的數(shù)據(jù)類型,它能將一組具有不同屬性的數(shù)據(jù)納入到一個(gè)統(tǒng)一的變量名下進(jìn)行管理。建立一個(gè)結(jié)構(gòu)矩陣可采用給結(jié)構(gòu)成員賦值的辦法。具體格式為:結(jié)構(gòu)矩陣名.成員名=表達(dá)式其中表達(dá)式應(yīng)理解為矩陣表達(dá)式。2結(jié)構(gòu)成員的修改可以根據(jù)需要增加或刪除結(jié)構(gòu)的成員。例如要給結(jié)構(gòu)矩陣a增加一個(gè)成員x4,可給a中任意一個(gè)元素增加成員x4:a(1).x4=410075;但其他成員均為空矩陣,可以使用賦值語句給它賦確定的值。要刪除結(jié)構(gòu)的成員,則可以使用rmfield函數(shù)來完成。例如,刪除成員x4:a=rmfield(a,x4);3關(guān)于結(jié)構(gòu)的函數(shù)除了一般的結(jié)構(gòu)數(shù)據(jù)的操作外,MATLAB還提供了部分函數(shù)來進(jìn)行結(jié)構(gòu)矩陣的操作。2.7.2 單元數(shù)據(jù)1單元矩陣的建立與引用建立單元矩陣和一般矩陣相似,只是矩陣元素用大括號括起來??梢杂脦в写罄ㄌ栂聵?biāo)的形式引用單元矩陣元素。例如b3,3。單元矩陣的元素可以是結(jié)構(gòu)或單元數(shù)據(jù)??梢允褂胏elldisp函數(shù)來顯示整個(gè)單元矩陣,如celldisp(b)。還可以刪除單元矩陣中的某個(gè)元素。2關(guān)于單元的函數(shù)MATLAB還提供了部分函數(shù)用于單元的操作。2.8 稀疏矩陣2.8.1 矩陣存儲方式MATLAB的矩陣有兩種存儲方式:完全存儲方式和稀疏存儲方式。1完全存儲方式完全存儲方式是將矩陣的全部元素按列存儲。以前講到的矩陣的存儲方式都是按這個(gè)方式存儲的,此存儲方式對稀疏矩陣也適用。2稀疏存儲方式稀疏存儲方式僅存儲矩陣所有的非零元素的值及其位置,即行號和列號。在MATLAB中,稀疏存儲方式也是按列存儲的。注意,在講稀疏矩陣時(shí),有兩個(gè)不同的概念,一是指矩陣的0元素較多,該矩陣是一個(gè)具有稀疏特征的矩陣,二是指采用稀疏方式存儲的矩陣。2.8.2 稀疏存儲方式的產(chǎn)生1將完全存儲方式轉(zhuǎn)化為稀疏存儲方式函數(shù)A=sparse(S)將矩陣S轉(zhuǎn)化為稀疏存儲方式的矩陣A。當(dāng)矩陣S是稀疏存儲方式時(shí),則函數(shù)調(diào)用相當(dāng)于A=S。sparse函數(shù)還有其他一些調(diào)用格式:sparse(m,n):生成一個(gè)mn的所有元素都是0的稀疏矩陣。sparse(u,v,S):u,v,S是3個(gè)等長的向量。S是要建立的稀疏矩陣的非0元素,u(i)、v(i)分別是S(i)的行和列下標(biāo),該函數(shù)建立一個(gè)max(u)行、max(v)列并以S為稀疏元素的稀疏矩陣。此外,還有一些和稀疏矩陣操作有關(guān)的函數(shù)。例如u,v,S=find(A):返回矩陣A中非0元素的下標(biāo)和元素。這里產(chǎn)生的u,v,S可作為sparse(u,v,S)的參數(shù)。full(A):返回和稀疏存儲矩陣A對應(yīng)的完全存儲方式矩陣。2產(chǎn)生稀疏存儲矩陣只把要建立的稀疏矩陣的非0元素及其所在行和列的位置表示出來后由MATLAB自己產(chǎn)生其稀疏存儲,這需要使用spconvert函數(shù)。調(diào)用格式為:B=spconvert(A)其中A為一個(gè)m3或m4的矩陣,其每行表示一個(gè)非0元素,m是非0元素的個(gè)數(shù),A每個(gè)元素的意義是:(i,1) 第i個(gè)非0元素所在的行。(i,2) 第i個(gè)非0元素所在的列。(i,3) 第i個(gè)非0元素值的實(shí)部。(i,4) 第i個(gè)非0元素值的虛部,若矩陣的全部元素都是實(shí)數(shù),則無須第四列。該函數(shù)將A所描述的一個(gè)稀疏矩陣轉(zhuǎn)化為一個(gè)稀疏存儲矩陣。例2-15 根據(jù)表示稀疏矩陣的矩陣A,產(chǎn)生一個(gè)稀疏存儲方式矩陣B。命令如下:A=2,2,1;3,1,-1;4,3,3;5,3,8;6,6,12;B=spconvert(A)3帶狀稀疏存儲矩陣用spdiags函數(shù)產(chǎn)生帶狀稀疏矩陣的稀疏存儲,調(diào)用格式是:A=spdiags(B,d,m,n)其中,參數(shù)m,n為原帶狀矩陣的行數(shù)與列數(shù)。B為rp階矩陣,這里r=min(m,n),p為原帶狀矩陣所有非零對角線的條數(shù),矩陣B的第i列即為原帶狀矩陣的第i條非零對角線。4單位矩陣的稀疏存儲單位矩陣只有對角線元素為1,其他元素都為0,是一種具有稀疏特征的矩陣。函數(shù)eye產(chǎn)生一個(gè)完全存儲方式的單位矩陣。MATLAB還有一個(gè)產(chǎn)生稀疏存儲方式的單位矩陣的函數(shù),這就是speye。函數(shù)speye(m,n)返回一個(gè)mn的稀疏存儲單位矩陣。2.8.3 稀疏矩陣應(yīng)用舉例稀疏存儲矩陣只是矩陣的存儲方式不同,它的運(yùn)算規(guī)則與普通矩陣是一樣的。所以,在運(yùn)算過程中,稀疏存儲矩陣可以直接參與運(yùn)算。當(dāng)參與運(yùn)算的對象不全是稀疏存儲矩陣時(shí),所得結(jié)果一般是完全存儲形式。第3章 MATLAB程序設(shè)計(jì)3.1 M文件3.1.1 M文件概述 用MATLAB語言編寫的程序,稱為M文件:命令文件(Script File)和函數(shù)文件(Function File)。 MATLAB工作模式 命令行方式。 程序文件驅(qū)動模式命令文件又稱為腳本文件,是一串指令的集合。用戶只需鍵入該命令文件的文件名,系統(tǒng)就會自動逐行執(zhí)行該文件中的各條語句。適用于小規(guī)模運(yùn)算。函數(shù)文件 函數(shù)文件基本格式:function 輸出形參列表=函數(shù)名(輸入形參列表) 注釋說明語句段 程序語句段例3-1 分別建立命令文件和函數(shù)文件,將華氏溫度f轉(zhuǎn)換為攝氏溫度c。程序1: 首先建立命令文件并以文件名f2c.m存盤。clear; %清除工作空間中的變量f=input(Input Fahrenheit temperature:);c=5*(f-32)/9然后在MATLAB的命令窗口中輸入f2c,將會執(zhí)行該命令文件,執(zhí)行情況為:Input Fahrenheit temperature:73c = 22.7778程序2:首先建立函數(shù)文件f2c.m。function c=f2c(f)c=5*(f-32)/9然后在MATLAB的命令窗口調(diào)用該函數(shù)文件。clear;y=input(Input Fahrenheit temperature:);x=f2c(y)輸出情況為:Input Fahrenheit temperature:70c = 21.1111x = 21.11113.1.2 M文件的建立與打開 M文件是一個(gè)文本文件,它可以用任何編輯程序來建立和編輯,而一般常用且最為方便的是使用MATLAB提供的文本編輯器。1建立新的M文件 為建立新的M文件,啟動MATLAB文本編輯器有3種方法: (1) 菜單操作。從MATLAB主窗口的File菜單中選擇New菜單項(xiàng),再選擇M-file命令,屏幕上將出現(xiàn)MATLAB 文本編輯器窗口。 (2) 命令操作。在MATLAB命令窗口輸入命令edit,啟動MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤。 (3) 命令按鈕操作。單擊MATLAB主窗口工具欄上的New M-File命令按鈕,啟動MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤。2打開已有的M文件 打開已有的M文件,也有3種方法: (1) 菜單操作。從MATLAB主窗口的File菜單中選擇Open命令,則屏幕出現(xiàn)Open對話框,在Open對話框中選中所需打開的M文件。在文檔窗口可以對打開的M文件進(jìn)行編輯修改,編輯完成后,將M文件存盤。 (2) 命令操作。在MATLAB命令窗口輸入命令:edit 文件名,則打開指定的M文件。 (3) 命令按鈕操作。單擊MATLAB主窗口工具欄上的Open File命令按鈕,再從彈出的對話框中選擇所需打開的M文件。3.2 MATLAB程序結(jié)構(gòu)3.2.1 順序結(jié)構(gòu)1數(shù)據(jù)的輸入從鍵盤輸入數(shù)據(jù),則可以使用input函數(shù)來進(jìn)行,該函數(shù)的調(diào)用格式為: A=input(提示信息,選項(xiàng));其中提示信息為一個(gè)字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。 如果在input函數(shù)調(diào)用時(shí)采用s選項(xiàng),則允許用戶輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令:xm=input(Whats your name?,s);2數(shù)據(jù)的輸出 MATLAB提供的命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為 disp(輸出項(xiàng))其中輸出項(xiàng)既可以為字符串,也可以為矩陣。例3-2 輸入x,y的值,并將它們的值互換后輸出。 程序如下: x=input(Input x please.); y=input(Input y please.); z=x; x=y; y=z; disp(x); disp(y);例3-3 求一元二次方程ax2 +bx+c=0的根。程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);3程序的暫停 暫停程序的執(zhí)行可以使用pause函數(shù),其調(diào)用格式為: pause(延遲秒數(shù)) 如果省略延遲時(shí)間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。 若要強(qiáng)行中止程序的運(yùn)行可使用Ctrl+C命令。3.2.2 選擇結(jié)構(gòu)1if語句 在MATLAB中,if語句有3種格式。 (1) 單分支if語句: if 條件 語句組 end 當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句,若條件不成立,則直接執(zhí)行if語句的后繼語句。(2) 雙分支if語句: if 條件 語句組1 else 語句組2 end 當(dāng)條件成立時(shí),執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。例3-4 計(jì)算分段函數(shù)的值。 程序如下:x=input(請輸入x的值:);if x=90 r=Aelseif n=80 r=Belseif n=70 r=Celseif n=60 r=Delse r=Eend例: 輸入一個(gè)字符,若為大寫字母,則輸出其對應(yīng)的小寫字母;若為小寫字母,則輸出其對應(yīng)的大寫字母;若為數(shù)字字符則輸出其對應(yīng)的數(shù)值,若為其他字符則原樣輸出。c=input(請輸入一個(gè)字符,s);if c=A & c=a& c=0& c=9 disp(abs(c)-abs(0);else
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年福建省事業(yè)單位招聘考試綜合類專業(yè)能力測試試卷(建筑類)試題
- 2025年電子商務(wù)師(中級)電子商務(wù)法律法規(guī)與政策案例分析試卷
- 2025年統(tǒng)計(jì)學(xué)專業(yè)期末考試:抽樣調(diào)查方法與統(tǒng)計(jì)推斷綜合案例分析試題
- 2025年鋼筋工(高級)考試試卷:鋼筋工程施工質(zhì)量事故分析及預(yù)防
- 2025年南京市事業(yè)單位招聘考試教師招聘化學(xué)學(xué)科專業(yè)知識試題(初中)
- 2025年非心源性胸痛診療試題
- 2025年建筑行業(yè)農(nóng)民工權(quán)益保障與用工模式變革下的行業(yè)風(fēng)險(xiǎn)管理與創(chuàng)新實(shí)踐案例報(bào)告
- 2025年國際化教育中跨文化交流能力培養(yǎng)的師資培訓(xùn)策略報(bào)告
- 化工工藝安全操作與管理要點(diǎn)測試題
- 綠色建筑材料市場推廣政策與綠色建筑市場需求匹配度分析報(bào)告
- 110kV變電站施工組織總設(shè)計(jì)
- DB32T-中小學(xué)生健康管理技術(shù)規(guī)范 第1部分:心理健康編制說明
- 輸水管線工程施工方案
- 鋁電解槽生產(chǎn)工藝與施工方案
- 水利信息化計(jì)算機(jī)監(jiān)控系統(tǒng)單元工程質(zhì)量驗(yàn)收評定表、檢查記錄
- 財(cái)產(chǎn)保險(xiǎn)專題知識講座
- 信號與系統(tǒng)考試試題及答案
- 2024年下半年考核招聘中小學(xué)教師報(bào)名表
- DB1304-T 437-2023 醫(yī)療行業(yè)快開門式壓力容器安全管理規(guī)范
- 特殊教育中的多模態(tài)干預(yù)
- 非歐幾何形體的曲率分析
評論
0/150
提交評論