matlab編程基礎(chǔ)與工程應(yīng)用第三章課件_第1頁
已閱讀1頁,還剩72頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAb 編程基礎(chǔ)與工程應(yīng)用,機械工業(yè)出版社 王敏杰 朱連軒 潘金鳳,,,第三章 MATLAB數(shù)組及矩陣運算,大家都知道,MATLAB專門以矩陣作為基本的運算單位,從計算機編程角度而言,為了能夠與C語言等高級語言保持一定的相似性,MATLAB的矩陣在M語言中使用數(shù)組的形式來表示。一般而言,數(shù)組是有序數(shù)據(jù)的集合,在大多數(shù)編程語言中,數(shù)組的每一個成員(元素)都屬于同種數(shù)據(jù)類型,它們使用同一數(shù)組名稱和不同的下標來唯一確定數(shù)組中的成員(

2、元素),其中下標是指元素在數(shù)組中的序號。和一般編程語言類似,M語言的數(shù)組有一維、二維和多維數(shù)組的區(qū)別,其中一維數(shù)組也稱為向量。 需要特別說明的是對于MATLAB,大多數(shù)數(shù)據(jù)類型的數(shù)組中,每一個元素都是統(tǒng)一數(shù)據(jù)類型的元素。但是MATALB也有一種特殊的元胞數(shù)組,它的每一個元素數(shù)據(jù)類型卻不相同。,MTALTb,第三章 MATLAB數(shù)組及矩陣運算,3.1 MATLAB向量生成3.2 MATLAB矩陣生成3.3

3、MATLAB矩陣元素的訪問3.4 矩陣和數(shù)組元素的運算3.5 多維數(shù)組3.6 稀疏矩陣3.7 應(yīng)用實例——噪聲信號和門限判決,3.1 MATLAB向量生成,MATLAB中,一維數(shù)組也稱為向量。向量的創(chuàng)建共有三種方法:(1)冒號生成法。 (參看第2.3.3 MATLAB指令行中標點符號內(nèi)容)a1=1:5 %缺省步長為1a2=0:pi/3:pi %非整數(shù)步長a3=1:-0.

4、25:0 %負實數(shù)步長a1 = 1 2 3 4 5a2 = 0 1.0472 2.0944 3.1416a3 = 1.0000 0.7500 0.5000 0.2500 0(2)逐個元素輸入法。 這是最常用的構(gòu)造方法。如:>> a4=[0,pi/6,pi/3,2*pi/3,pi

5、]a4 = 0 0.5236 1.0472 2.0944 3.1416,(3)MATLAB函數(shù)生成法。 MATLAB有很多用來生成特殊形式數(shù)組的函數(shù),下面列舉4個常用的生成向量的函數(shù)。,創(chuàng)建對數(shù)間隔向量的logspace函數(shù)。該函數(shù)基本語法為:x=logspace(a,b,n),其中該函數(shù)創(chuàng)建的向量以10a、10b為左右端點,n為產(chǎn)生的向量元素的個數(shù),元素彼此之間的間隔按照對數(shù)

6、空間的間隔設(shè)置。所以,logspace產(chǎn)生對數(shù)等間隔(1?n)行向量。>> y=logspace(1,3,6)y = 1.0e+003 * 0.0100 0.0251 0.0631 0.1585 0.3981 1.0000,創(chuàng)建線性間隔向量的linspace函數(shù)。該函數(shù)基本語法為:x=linspace(a,b,n),其中a、b為左右端點,n為產(chǎn)生的向量元素的個數(shù),函數(shù)將根據(jù)n的

7、數(shù)值平均計算元素之間的間隔,間隔的計算公式為: 𝑏?𝑎 𝑛?1 。所以,linspace產(chǎn)生線性等間隔(1?n)行向量。>> y=linspace(1,3,6)y = 1.0000 1.4000 1.8000 2.2000 2.6000 3.0000,創(chuàng)建均勻分布隨機數(shù)rand(1,n)由于rand(m,n)可以產(chǎn)生均勻分布的隨機(m

8、?n)的矩陣,所以當m=1時,即rand(1,n)產(chǎn)生均勻分布的隨機向量,數(shù)值范圍(0,1)。>> y=rand(1,5)y = 0.8147 0.9058 0.1270 0.9134 0.6324,全1數(shù)組ones(1,n)由于ones(m,n)可以產(chǎn)生元素全為1的(m?n)的矩陣,所以當m=1時,ones(1,n)產(chǎn)生元素全為1的行向量。>> y=ones(1,7)y

9、 = 1 1 1 1 1 1 1,3.2 MATLAB矩陣生成,矩陣一般具有m行n列,在編程語言中,矩陣和二維數(shù)組一般指的是同一個概念。在M語言中,向量可以看做矩陣(或二維數(shù)組)的特例。,3.2.1直接輸入法,對于較小的矩陣,可以從鍵盤上直接輸入。具體參看第2.1矩陣和數(shù)組。共有三個要素需要記住:整個輸入矩陣首尾必須加方括號“[ ]”。矩陣的行與行之間必須加分號“;”或按回車

10、鍵。矩陣元素之間可以使用逗號“,”,或者空格間隔。例2.1-1使用的是同行輸入法,還可以使用異行輸入法。>> y=[1,2,3 4,5,6 7,8,9]y = 1 2 3 4 5 6 7 8 9需要說明的是,在第一行“1,2,3”輸入,并按鍵后,光標下移一行。在輸入4之前需要按一個空格鍵,然后再輸入“4,5,6”。按鍵后,光標下移一行

11、,先按一個空格鍵,然后再輸入“7,8,9]”。,3.2.2數(shù)組編輯器創(chuàng)建法,當矩陣(數(shù)組)元素比較多,矩陣較大時,使用直接輸入法就很不方便了。此時可以借助數(shù)組編輯器來完成矩陣的輸入。下面舉例說明具體的創(chuàng)建方法和創(chuàng)建步驟。,【例3.2-1】試用數(shù)組編輯器,把如下(3?5)數(shù)組輸入MATLAB內(nèi)存,并命名為變量rad。 0.1419 0.7922 0.0357 0.6787 0.3922

12、 0.4218 0.9595 0.8491 0.7577 0.6555 0.9157 0.6557 0.9340 0.7431 0.1712(1)點擊工作空間瀏覽器(Workspace)中的 (new variable)圖標,便在工作空間中引出了一個名為unnamed的變量,如圖4-1、4-2所示。,圖3-1 new variable圖標,圖3-2

13、Workspace中新產(chǎn)生的unnamed變量,(2)將光標閃動的“unnamed”修改為rad。(3)雙擊變量“rad”,彈出圖3-3所示的變量編輯器空白界面。數(shù)組中,除第一元素為0外,其余均為空白。雙擊空白的單元格,可以按照行和列輸入數(shù)據(jù)。,圖3-3 變量編輯器空白界面,圖3-4變量編輯器輸入數(shù)據(jù)后的界面,變量輸入并保存后,可以用whos命令查詢。>> whos Name Size

14、 Bytes Class Attributes rad 3x5 120 double,假如該變量供以后調(diào)試用,可以選擇MATALB的菜單項“File”→“Save workspace as ….”,保存為擴展名為.mat的文件,例如上述數(shù)據(jù)保存為example32_1.mat文件。生成的example32_1.mat文件,可以通過“l(fā)oad”命令加載外部數(shù)據(jù)文

15、件創(chuàng)建矩陣。在命令行窗口中輸入:>> load example32_1則MATLAB會自動創(chuàng)建變量名為rad的矩陣。,3.2.3 M文件創(chuàng)建法,對于經(jīng)常調(diào)用的矩陣,當數(shù)據(jù)規(guī)模較大時,可以為它專門建立一個M文件。,【例3.2-2】用M文件創(chuàng)建法,創(chuàng)建例3.2-1數(shù)據(jù)的矩陣。打開M文件編輯器(Editor/Debugger),并在空白處輸入所需要的數(shù)組。,圖4-5 M文件編輯器中創(chuàng)建矩陣界面,將上述文件保存為exampl

16、e32_2.m。在需要rad矩陣時可以直接用運行鍵運行該文件,或在命令行窗口運行該文件,就會自動生成名為rad的矩陣,并存儲在MATLAB內(nèi)存當中。運行后在Workspace可以看到rad矩陣。>> example32_2rad = 0.1419 0.7922 0.0357 0.6787 0.3922 0.4218 0.9595 0.8491 0.7577

17、0.6555 0.9157 0.6557 0.9340 0.7431 0.1712,3.2.4 MATLAB函數(shù)生成法,MATLAB提供若干個生成特殊矩陣(或數(shù)組)的函數(shù),表3-1所示。,表3-1 經(jīng)典矩陣(或數(shù)組)生成函數(shù),【例3.2-3】用MATLAB的指令產(chǎn)生矩陣示例。 在Editor窗口中編輯如下指令,并保存為example32_3.m文件,a1=zeros(3,4) a2=o

18、nes(3,4)a3=eye(3)a4=rand(3,4)a5=randn(3,4)a6=randi(10,2,5)a7=randperm(8)a9=magic(3)a10=diag(a9)a11=tril(a9)a12=triu(a9)>> example32_3a1 = 0 0 0 0 0 0 0 0 0 0

19、 0 0a2 = 1 1 1 1 1 1 1 1 1 1 1 1,a3 = 1 0 0 0 1 0 0 0 1a4 = 0.1920 0.0938 0.8611 0.6714 0.1389 0.5254

20、 0.4849 0.7413 0.6963 0.5303 0.3935 0.5201a5 = -0.6086 -1.3429 -0.4189 -0.3001 -1.2226 -1.0322 -0.1403 1.0294 0.3165 1.3312 0.8998 -0.3451a6 = 7 5 4 3

21、 9 8 1 5 2 5a7 = 8 7 2 4 6 3 5 1a9 = 8 1 6 3 5 7 4 9 2,a10 = 8 5 2a11 = 8 0 0 3 5

22、0 4 9 2a12 = 8 1 6 0 5 7 0 0 2,3.3 MATLAB矩陣元素的訪問,前面兩小節(jié)講述了MATLAB向量和矩陣的生成,生成后的矩陣元素是按列存儲在MATLAB存儲空間的。運行第3.2.3中的example32_2.m文件,產(chǎn)生例3.2-1中的rad矩陣。,>> example32_2rad =

23、 0.1419 0.7922 0.0357 0.6787 0.3922 0.4218 0.9595 0.8491 0.7577 0.6555 0.9157 0.6557 0.9340 0.7431 0.1712對于rad矩陣,MATLAB的存儲順序是0.1419,0.4218,0.9157,0.7922,0.9595,0.6777,0

24、.0357…..,MATLAB可以用索引,也可以用下標來引用數(shù)組元素。對于索引和下標的區(qū)別,可以參考表3-2。,表3-2 矩陣的索引和下標,從上面的例子中已經(jīng)很清晰的說明了下標和索引的區(qū)別了,也就是說MATLAB為每個元素分配了一個唯一識別的ID(即索引)。表3-2的第二列是索引,第三列是下標。因此矩陣中的元素可以通過它的行,列下標來引用,即全下標的方式來引用;也可以使用單下標的方式來引用,即索引的方式來引用。需要大家注意的是MATLA

25、B的下標是可以多行、多列同時引用的,這和C語言每次只能引用一個是不同的。表3-3羅列了使用單下標或全下標訪問矩陣的常用格式。,表3-3訪問矩陣的常用格式,對于3?5的矩陣rad,可以采用單下標引用它的元素,rad(k)是按列存儲的第k個元素。>> rad(5)ans =0.9595訪問由向量L為[1 10 5 2 1 3]指定的矩陣rad的元素。>> rad([1 10 5 2 1 3])ans =

26、 0.1419 0.6787 0.9595 0.4218 0.1419 0.9157 如果試圖引用的下標超出矩陣的下標范圍,系統(tǒng)則會給出出錯信息。>> rad(20)??? Index exceeds matrix dimensions.,對矩陣rad(i,j),如果將一個值賦給矩陣外的元素,MATLAB會自動增加矩陣的大小,以容納這個新元素,而相應(yīng)增加其他元素,且都被賦值為0

27、。>> rad(1,6)=20rad = 0.1419 0.7922 0.0357 0.6787 0.3922 20.0000 0.4218 0.9595 0.8491 0.7577 0.6555 00.9157 0.6557 0.9340 0.7431 0.1712 0rad(2:3,3:-1

28、:1)表示引用數(shù)組中的2~3行,3~1列對應(yīng)的元素。>> rad(2:3,3:-1:1)ans = 0.8491 0.9595 0.4218 0.9340 0.6557 0.9157rad(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒數(shù)第n行或列。>> rad(:,end)ans = 0.3922

29、 0.6555 0.1712,rad(1,end-1)表示引用第1行倒數(shù)第2個元素。>> rad(1,end-1)ans = 0.6787rad([2 1 3 3],[1 1 2 2 1])表示生成了一個按兩個向量引用指定的元素(可以重復(fù)訪問向量中的元素),即rad中的第2,1,3,3行以及第1,1,2,2,4,5列的元素。>> rad([2 1 3 3],[1 1 2 2 4 5

30、])ans = 0.4218 0.4218 0.9595 0.9595 0.7577 0.6555 0.1419 0.1419 0.7922 0.7922 0.6787 0.3922 0.9157 0.9157 0.6557 0.6557 0.7431 0.1712 0.9157 0.9157 0.65

31、57 0.6557 0.7431 0.1712,3.4 矩陣和數(shù)組元素的運算,3.4.1 基本數(shù)學(xué)運算函數(shù),MATLAB基本數(shù)學(xué)運算函數(shù)有三角函數(shù)、指數(shù)運算函數(shù)、復(fù)數(shù)運算函數(shù)、圓整和求余函數(shù),分別如表3-4、表3-5、表3-6、表3-7所示。需要說明的是,這些函數(shù)的參數(shù)可以是矩陣,也可以是向量或者多維數(shù)組,函數(shù)在處理參數(shù)時,都是按照數(shù)組運算規(guī)則來進行的。在MATLAB中還存在一類函數(shù),用來獲取矩陣或數(shù)組的信息,以及對

32、矩陣(數(shù)組)進行操作。表3-8中列出了較常用的操作函數(shù)。在MATLAB中,獲取基本運算函數(shù),請使用MATLAB的在線幫助;在命令行窗口中輸入:,>> help elfun Elementary math functions. Trigonometric. sin - Sine. sind - Sine of argument in degrees.……有關(guān)每個函數(shù)

33、的具體使用語法,請參閱MATLAB的在線幫助文檔。,表3-4三角函數(shù),在命令行窗口直接輸入:>> n=3:6;>> cos(pi./n)+sec(pi./n)ans = 2.5000 2.1213 2.0451 2.0207>> tan(3.*n*180./pi)ans = 0.4718 -0.4947 -4.6665 1.2137>&g

34、t; tan(3*pi/5),表3-5指數(shù)運算函數(shù),說明:以real開頭的函數(shù)僅能處理實數(shù)。realpow函數(shù)的語法為:Z = realpow(X,Y),是將實數(shù)矩陣X中的每個元素提高Y矩陣對應(yīng)元素的冪,其中X、Y矩陣同尺寸。Z矩陣為realpow的輸出實數(shù)矩陣。,>> m=4:2:8;>> log(m)ans =1.3863 1.7918 2.0794>> reallog(5

35、)ans =1.6094,>> reallog(2+i) %reallog處理復(fù)數(shù),會報錯??? Error using ==> reallogReallog produced complex result. >> log(2+i)ans = 0.8047 + 0.4636i>> k=[1,2;3,4];>> log10(k)ans =

36、 0 0.3010 0.4771 0.6021>> log2(5)ans = 2.3219>> pow2(k)ans = 2 4 8 16,【例3.4-1】實數(shù)冪運算函數(shù)realpow函數(shù)示例。,>> X = -2*ones(3,3)X = -2 -2 -2 -2 -2 -2

37、 -2 -2 -2>> Y = pascal(3)Y = 1 1 1 1 2 3 1 3 6>> realpow(X,Y)ans = -2 -2 -2 -2 4 -8 -2 -8 64,例3.4-1顯示X矩陣的2行2列元素提高到Y(jié)矩陣2行2列元素的冪,同

38、理類推新生成的矩陣ans的2行3列,3行2列,3行3列元素為(-2)3、(-2)3、(-2)6。,nextpow2函數(shù)時用來計算僅僅比輸入?yún)?shù)大的2的冪。例如輸入?yún)?shù)為m,函數(shù)計算結(jié)果整數(shù)n需要滿足的條件 2 𝑛 ≥𝑎𝑏𝑠(𝑚)≥ 2 𝑛?1 。>> nextpow2(18)ans = 5,【例3.4-2】計算比僅僅

39、18大的2的冪。,表3-6指數(shù)運算函數(shù),說明:complex函數(shù)語法為z = complex(x,y) ,函數(shù)創(chuàng)建復(fù)數(shù)z,輸入的x,y必須同為變量或維數(shù)相同、相同數(shù)據(jù)類型的向量、矩陣或者多維數(shù)組。輸出的結(jié)果跟輸入的維數(shù)相同,返回值為x+y*i;y=complex(x) 返回結(jié)果為實部為x,所有虛部為0的復(fù)數(shù),等價于y=complex(x,0)。,>> x = complex(22,54)x = 22.0000 +54

40、.0000i>> x = complex(3:6,2:5)x = 3.0000 + 2.0000i 4.0000 + 3.0000i 5.0000 + 4.0000i 6.0000 + 5.0000i>> abs(x)ans = 58.3095>> angle(x) %單位為弧度ans =1.1839>> angle(x)*180/

41、pi %計算為度的單位ans = 67.8337>> conj(x)ans = 22.0000 -54.0000i,【例3.4-3】創(chuàng)建復(fù)數(shù)示例。,表3-7圓整和求余函數(shù),說明:rem/mod(x,y),當x與y具有相同符號時,兩者相等;但是當兩者符號不同,兩者不同。R = rem(x,y) ,如果y?0,返回 x - n.*y, 其中 n = fix(x./y)。M = mod(x,y) ,如果

42、y?0,返回 x - n.*y, 其中n = floor(x./y)。>> rem(11,-3)ans = 2>> mod(11,-3)ans =-1,>> m=[0.2875 0.9985 1.002];>> floor(m)ans = 0 0 1>> ceil(m)ans = 1 1 2>

43、;> fix(m)ans = 0 0 1>> round(m)ans = 0 1 1>> X=[-0.231 0 0.52];>> sign(X)ans = -1 0 1,表3-8矩陣(數(shù)組)常用操作函數(shù),仍然運行example32_2.m文件,產(chǎn)生rad矩陣。>> size(rad)ans

44、= 3 5>> length(rad)ans = 5>> ndims(rad)ans = 2>> numel(rad),ans = 15>> disp(rad) 0.1419 0.7922 0.0357 0.6787 0.3922 0.4218 0.9595 0.8491 0

45、.7577 0.65550.9157 0.6557 0.9340 0.7431 0.1712,3.4.2 矩陣和數(shù)組的基本運算,MATLAB對數(shù)組和矩陣提供了分別提供了運算方法—“矩陣算法”和“數(shù)組算法”?!熬仃囁惴ā彼惴ㄊ前丫仃嚳醋鲆粋€整體,各種運算完全按照線性代數(shù)中的矩陣運算法則進行,運算的書寫形式和運算符號都與矩陣理論完全一致。“數(shù)組算法”就是把矩陣看做由其元素構(gòu)成的一組“數(shù)組”,運算時對應(yīng)元素之間

46、數(shù)與數(shù)的運算。這種算法適用于大批數(shù)據(jù)的處理和一次求出多個函數(shù)值。在MATLAB中獲取矩陣(線性代數(shù))的運算函數(shù),請在MATLAB命令行窗口輸入:>> help matfun Matrix functions - numerical linear algebra. Matrix analysis. norm - Matrix or vector norm.normest - Es

47、timate the matrix 2-norm.……,(1)矩陣的基本運算表3-9列出了矩陣基本運算及對應(yīng)的含義說明,其中假設(shè)A、B為矩陣,a為標量,【例3.4-4】求解方程組 ?𝑥+𝑦+2𝑧=2 3𝑥?𝑦?𝑧=6 ?𝑥+3𝑦+4𝑧=4 在數(shù)學(xué)上該方程可以寫為:A= ?1 1

48、 2 3 ?1 ?1 ?1 3 4 ,B= 2 6 4 ?1 1 2 3 ?1 ?1 ?1 3 4 𝑥 𝑦 𝑧 = 2 6 4 𝑥 𝑦 𝑧 = ?1 1 2 3 ?1 ?1 ?1 3 4 ?1 2 6 4,在Editor窗

49、口編輯如下代碼行A=[-1 1 2;3 -1 1;-1 3 4];B=[2;6;4];X1=inv(A)*BX2=A\B運行example34_1.m,X1 = 1.0000 -1.0000 2.0000X2 = 1.0000 -1.0000 2.0000,x1與x2相同,A\B相當于矩陣方程AX=B的解,即inv(A)*B。而A/B相當于矩陣方程XB=A的解,即A*inv(B)。

50、,【解】程序example34_5.m: clear;A=[2i,3+i,4;2+6i,3,4+2i;5,6,9+4i]b=A' %求轉(zhuǎn)置矩陣c=conj(A)d=A^2e=3+Af=det(A) %求矩陣的行列式。行列式不為0,可以求出逆矩陣g=inv(A) %求逆矩陣h=eig(A) %求矩陣A的全部特征值構(gòu)成矩陣hv=[1 2 3];

51、x=diag(v, 3) %創(chuàng)建對角矩陣,對角元素為v向量,返回3+3階方陣Xy=diag(v) %向量v為主對角線元素,運行后結(jié)果為:A = 0 + 2.0000i 3.0000 + 1.0000i 4.0000 2.0000 + 6.0000i 3.0000 4.0000 + 2.0000i 5.0000 6

52、.0000 9.0000 + 4.0000ib = 0 - 2.0000i 2.0000 - 6.0000i 5.0000 3.0000 - 1.0000i 3.0000 6.0000 4.0000 4.0000 - 2.0000i 9.0000 - 4.0000ic =

53、 0 - 2.0000i 3.0000 - 1.0000i 4.0000 2.0000 - 6.0000i 3.0000 4.0000 - 2.0000i 5.0000 6.0000 9.0000 - 4.0000id = 1.0e+002 * 0.1600 + 0.2000i 0.3100 + 0.09

54、00i 0.4600 + 0.3400i 0.1400 + 0.3200i 0.3300 + 0.3200i 0.4800 + 0.6400i 0.5700 + 0.6600i 0.8700 + 0.2900i 1.0900 + 0.8400ie = 3.0000 + 2.0000i 6.0000 + 1.0000i 7.0000 5.0000 + 6.0000i

55、 6.0000 7.0000 + 2.0000i 8.0000 9.0000 12.0000 + 4.0000i,f = 1.1800e+002 +2.0000e+001ig = 0.0247 - 0.0042i -0.0211 - 0.1744i -0.0025 + 0.0852i 0.1416 - 0.4647i -0.2055 + 0.1

56、874i 0.1212 + 0.1151i 0.0256 + 0.3008i 0.1138 - 0.0786i -0.0195 - 0.1153ih = 13.9778 + 4.9197i -0.9328 + 3.2377i -1.0449 - 2.1574ix = 0 0 0 1 0 0 0 0 0 0 2

57、 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0y = 1 0 0 0 2 0 0 0 3,(2)矩陣的分

58、解,矩陣分解是將一個矩陣分解為幾個“較簡單”矩陣的連乘積的形式。表3-10提供4種矩陣分解的函數(shù)。,①對稱正定矩陣的Cholesky分解R=chol(A);對稱正定矩陣的Cholesky分解,其中X為對稱正定矩陣。Cholesky分解是把一個對稱正定矩陣X分解為一個上三角矩陣R與其轉(zhuǎn)置的乘積,即X=R’*R。一個對稱矩陣能夠進行Cholesky分解的條件是矩陣是正定的,即矩陣所有對角元素都是正數(shù),同時矩陣非對角元素不會太大。例如x

59、=pascal(4),對其進行Cholesky分解為:>> x=pascal(4)x = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20>> R=chol(x)R = 1 1 1 1 0 1 2

60、 3 0 0 1 3 0 0 0 1,②LU分解[L,U]=lu(A);A為一個方陣,L為“心里”下三角矩陣,U為上三角矩陣。LU分解是將任意一個方陣分解為一個“心里”下三角矩陣L與一個上三角矩陣U的乘積,即A=L*U?!靶睦铩毕氯蔷仃囀窍氯蔷仃嚺c置換矩陣的乘積。[L,U,P]=lu(A);A為一個方陣,L為下三角矩陣,U為上三角矩陣,P為置換矩陣;滿足P

61、*A=L*U的關(guān)系。在命令行窗口輸入A,并進行LU分解: >> A=[1 2 3;2 5 2;3 1 5]A = 1 2 3 2 5 2 3 1 5>> [l,u]=lu(A) % l存儲的心里下三角矩陣,u存儲上三角矩陣l = 0.3333 0.3846 1.0000

62、0.6667 1.0000 0 1.0000 0 0u = 3.0000 1.0000 5.0000 0 4.3333 -1.3333 0 0 1.8462,>> [L,U,P]=lu(A) %L為下三角矩陣,U為上三角矩陣,P為置換矩陣。L = 1.

63、0000 0 0 0.6667 1.0000 0 0.3333 0.3846 1.0000U = 3.0000 1.0000 5.0000 0 4.3333 -1.3333 0 0 1.8462P = 0 0 1 0 1

64、 0 1 0 0,③矩陣奇異值分解[U,S,V]=sud(A);對于m?n的矩陣A,如果存在m?m的酉矩陣U和n?n的酉矩陣V(酉矩陣即為滿足XHX=XXH=E, XH為X的共軛轉(zhuǎn)置矩陣),使得A=U*S*V,其中S為一個m?n的矩陣的非負對角矩陣,且對角元素值降序排列,則A=U*S*V為A的奇異值分解。U、S、V稱為矩陣A的奇異值分解的三對組。在命令行窗口輸入A,并進行奇異值分解:>>

65、; A=[1 2 3;2 5 2;3 1 5]A = 1 2 3 2 5 2 3 1 5>> [u,s,v]=svd(A)u = -0.4437 0.0476 -0.8949 -0.6139 -0.7436 0.2648 -0.6529 0.6669 0.3592s = 8.2667

66、 0 0 0 3.6074 0 0 0 0.8048v = -0.4391 0.1555 0.8849 -0.5576 -0.8194 -0.1327 -0.7044 0.5517 -0.4466,④正交三角分解[Q,R]=qr(A); 其中矩陣R為與矩陣A 具有相同大小的上

67、三角矩陣,Q為正交矩陣。矩陣的正交分解是把一個m?n的矩陣A分解為一個正交矩陣Q和一個上三角矩陣R的乘積,即A=Q*R。因此矩陣的正交分解也稱為QR分解。在命令行窗口輸入A,并進行正交分解:>> [Q,R]=qr(A)Q = 0.2673 0.2488 0.9309 0.5345 0.7656 -0.3581 0.8018 -0.5933 -0.0716R =

68、 3.7417 4.0089 5.8797 0 3.7321 -0.6890 0 0 1.7187,(3)非線性矩陣運算函數(shù),說明:注意expm()、logm()、sqrtm()和exp()、log()、sqrt()的區(qū)別,前三個是針對矩陣,按矩陣運算規(guī)則進行運算,而后三個是按數(shù)組規(guī)則進行運算的。,①矩陣指數(shù)運算:如果矩陣X的特征向量為V,相應(yīng)的特

69、征值為D,即[V,D] = eig(X),那么 expm(X) = V*diag(exp(diag(D)))/V計算矩陣A的指數(shù)>> A=[1 1 0;0 0 2;0 0 -1]A = 1 1 0 0 0 2 0 0 -1>> [v,d]=eig(A)v = 1.0000 -0.7071 0.4082

70、 0 0.7071 -0.8165 0 0 0.4082d = 1 0 0 0 0 0 0 0 -1,>> diag(d)ans = 1 0 -1>> expm(A)ans = 2.7183 1.7183 1.0862

71、 0 1.0000 1.2642 0 0 0.3679>> exp(A)ans = 2.7183 2.7183 1.0000 1.0000 1.0000 7.38911.0000 1.0000 0.3679,②矩陣對數(shù)運算 矩陣對數(shù)運算是矩陣指數(shù)運算的逆運,logm(expm(A)) = A = exp

72、m(logm(A))。例如再對expm(A)矩陣進行對數(shù)運算。>> A=[1 1 0;0 0 2;0 0 -1];>> B=expm(A)B = 2.7183 1.7183 1.0862 0 1.0000 1.2642 0 0 0.3679>> C=logm(B)C = 1.0000 1.

溫馨提示

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

評論

0/150

提交評論