版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MATLAb 編程基礎(chǔ)與工程應(yīng)用,機(jī)械工業(yè)出版社 王敏杰 朱連軒 潘金鳳,,,第三章 MATLAB數(shù)組及矩陣運(yùn)算,大家都知道,MATLAB專(zhuān)門(mén)以矩陣作為基本的運(yùn)算單位,從計(jì)算機(jī)編程角度而言,為了能夠與C語(yǔ)言等高級(jí)語(yǔ)言保持一定的相似性,MATLAB的矩陣在M語(yǔ)言中使用數(shù)組的形式來(lái)表示。一般而言,數(shù)組是有序數(shù)據(jù)的集合,在大多數(shù)編程語(yǔ)言中,數(shù)組的每一個(gè)成員(元素)都屬于同種數(shù)據(jù)類(lèi)型,它們使用同一數(shù)組名稱(chēng)和不同的下標(biāo)來(lái)唯一確定數(shù)組中的成員(
2、元素),其中下標(biāo)是指元素在數(shù)組中的序號(hào)。和一般編程語(yǔ)言類(lèi)似,M語(yǔ)言的數(shù)組有一維、二維和多維數(shù)組的區(qū)別,其中一維數(shù)組也稱(chēng)為向量。 需要特別說(shuō)明的是對(duì)于MATLAB,大多數(shù)數(shù)據(jù)類(lèi)型的數(shù)組中,每一個(gè)元素都是統(tǒng)一數(shù)據(jù)類(lèi)型的元素。但是MATALB也有一種特殊的元胞數(shù)組,它的每一個(gè)元素?cái)?shù)據(jù)類(lèi)型卻不相同。,MTALTb,第三章 MATLAB數(shù)組及矩陣運(yùn)算,3.1 MATLAB向量生成3.2 MATLAB矩陣生成3.3
3、MATLAB矩陣元素的訪問(wèn)3.4 矩陣和數(shù)組元素的運(yùn)算3.5 多維數(shù)組3.6 稀疏矩陣3.7 應(yīng)用實(shí)例——噪聲信號(hào)和門(mén)限判決,3.1 MATLAB向量生成,MATLAB中,一維數(shù)組也稱(chēng)為向量。向量的創(chuàng)建共有三種方法:(1)冒號(hào)生成法。 (參看第2.3.3 MATLAB指令行中標(biāo)點(diǎn)符號(hào)內(nèi)容)a1=1:5 %缺省步長(zhǎng)為1a2=0:pi/3:pi %非整數(shù)步長(zhǎng)a3=1:-0.
4、25:0 %負(fù)實(shí)數(shù)步長(zhǎng)a1 = 1 2 3 4 5a2 = 0 1.0472 2.0944 3.1416a3 = 1.0000 0.7500 0.5000 0.2500 0(2)逐個(gè)元素輸入法。 這是最常用的構(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有很多用來(lái)生成特殊形式數(shù)組的函數(shù),下面列舉4個(gè)常用的生成向量的函數(shù)。,創(chuàng)建對(duì)數(shù)間隔向量的logspace函數(shù)。該函數(shù)基本語(yǔ)法為:x=logspace(a,b,n),其中該函數(shù)創(chuàng)建的向量以10a、10b為左右端點(diǎn),n為產(chǎn)生的向量元素的個(gè)數(shù),元素彼此之間的間隔按照對(duì)數(shù)
6、空間的間隔設(shè)置。所以,logspace產(chǎn)生對(duì)數(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)建線(xiàn)性間隔向量的linspace函數(shù)。該函數(shù)基本語(yǔ)法為:x=linspace(a,b,n),其中a、b為左右端點(diǎn),n為產(chǎn)生的向量元素的個(gè)數(shù),函數(shù)將根據(jù)n的
7、數(shù)值平均計(jì)算元素之間的間隔,間隔的計(jì)算公式為: 𝑏?𝑎 𝑛?1 。所以,linspace產(chǎn)生線(xiàn)性等間隔(1?n)行向量。>> y=linspace(1,3,6)y = 1.0000 1.4000 1.8000 2.2000 2.6000 3.0000,創(chuàng)建均勻分布隨機(jī)數(shù)rand(1,n)由于rand(m,n)可以產(chǎn)生均勻分布的隨機(jī)(m
8、?n)的矩陣,所以當(dāng)m=1時(shí),即rand(1,n)產(chǎn)生均勻分布的隨機(jī)向量,數(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)的矩陣,所以當(dāng)m=1時(shí),ones(1,n)產(chǎn)生元素全為1的行向量。>> y=ones(1,7)y
9、 = 1 1 1 1 1 1 1,3.2 MATLAB矩陣生成,矩陣一般具有m行n列,在編程語(yǔ)言中,矩陣和二維數(shù)組一般指的是同一個(gè)概念。在M語(yǔ)言中,向量可以看做矩陣(或二維數(shù)組)的特例。,3.2.1直接輸入法,對(duì)于較小的矩陣,可以從鍵盤(pán)上直接輸入。具體參看第2.1矩陣和數(shù)組。共有三個(gè)要素需要記?。赫麄€(gè)輸入矩陣首尾必須加方括號(hào)“[ ]”。矩陣的行與行之間必須加分號(hào)“;”或按回車(chē)
10、鍵。矩陣元素之間可以使用逗號(hào)“,”,或者空格間隔。例2.1-1使用的是同行輸入法,還可以使用異行輸入法。>> y=[1,2,3 4,5,6 7,8,9]y = 1 2 3 4 5 6 7 8 9需要說(shuō)明的是,在第一行“1,2,3”輸入,并按鍵后,光標(biāo)下移一行。在輸入4之前需要按一個(gè)空格鍵,然后再輸入“4,5,6”。按鍵后,光標(biāo)下移一行
11、,先按一個(gè)空格鍵,然后再輸入“7,8,9]”。,3.2.2數(shù)組編輯器創(chuàng)建法,當(dāng)矩陣(數(shù)組)元素比較多,矩陣較大時(shí),使用直接輸入法就很不方便了。此時(shí)可以借助數(shù)組編輯器來(lái)完成矩陣的輸入。下面舉例說(shuō)明具體的創(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)點(diǎn)擊工作空間瀏覽器(Workspace)中的 (new variable)圖標(biāo),便在工作空間中引出了一個(gè)名為unnamed的變量,如圖4-1、4-2所示。,圖3-1 new variable圖標(biāo),圖3-2
13、Workspace中新產(chǎn)生的unnamed變量,(2)將光標(biāo)閃動(dòng)的“unnamed”修改為rad。(3)雙擊變量“rad”,彈出圖3-3所示的變量編輯器空白界面。數(shù)組中,除第一元素為0外,其余均為空白。雙擊空白的單元格,可以按照行和列輸入數(shù)據(jù)。,圖3-3 變量編輯器空白界面,圖3-4變量編輯器輸入數(shù)據(jù)后的界面,變量輸入并保存后,可以用whos命令查詢(xún)。>> whos Name Size
14、 Bytes Class Attributes rad 3x5 120 double,假如該變量供以后調(diào)試用,可以選擇MATALB的菜單項(xiàng)“File”→“Save workspace as ….”,保存為擴(kuò)展名為.mat的文件,例如上述數(shù)據(jù)保存為example32_1.mat文件。生成的example32_1.mat文件,可以通過(guò)“l(fā)oad”命令加載外部數(shù)據(jù)文
15、件創(chuàng)建矩陣。在命令行窗口中輸入:>> load example32_1則MATLAB會(huì)自動(dòng)創(chuàng)建變量名為rad的矩陣。,3.2.3 M文件創(chuàng)建法,對(duì)于經(jīng)常調(diào)用的矩陣,當(dāng)數(shù)據(jù)規(guī)模較大時(shí),可以為它專(zhuān)門(mén)建立一個(gè)M文件。,【例3.2-2】用M文件創(chuàng)建法,創(chuàng)建例3.2-1數(shù)據(jù)的矩陣。打開(kāi)M文件編輯器(Editor/Debugger),并在空白處輸入所需要的數(shù)組。,圖4-5 M文件編輯器中創(chuàng)建矩陣界面,將上述文件保存為exampl
16、e32_2.m。在需要rad矩陣時(shí)可以直接用運(yùn)行鍵運(yùn)行該文件,或在命令行窗口運(yùn)行該文件,就會(huì)自動(dòng)生成名為rad的矩陣,并存儲(chǔ)在MATLAB內(nèi)存當(dāng)中。運(yùn)行后在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提供若干個(gè)生成特殊矩陣(或數(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矩陣元素的訪問(wèn),前面兩小節(jié)講述了MATLAB向量和矩陣的生成,生成后的矩陣元素是按列存儲(chǔ)在MATLAB存儲(chǔ)空間的。運(yùn)行第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對(duì)于rad矩陣,MATLAB的存儲(chǔ)順序是0.1419,0.4218,0.9157,0.7922,0.9595,0.6777,0
24、.0357…..,MATLAB可以用索引,也可以用下標(biāo)來(lái)引用數(shù)組元素。對(duì)于索引和下標(biāo)的區(qū)別,可以參考表3-2。,表3-2 矩陣的索引和下標(biāo),從上面的例子中已經(jīng)很清晰的說(shuō)明了下標(biāo)和索引的區(qū)別了,也就是說(shuō)MATLAB為每個(gè)元素分配了一個(gè)唯一識(shí)別的ID(即索引)。表3-2的第二列是索引,第三列是下標(biāo)。因此矩陣中的元素可以通過(guò)它的行,列下標(biāo)來(lái)引用,即全下標(biāo)的方式來(lái)引用;也可以使用單下標(biāo)的方式來(lái)引用,即索引的方式來(lái)引用。需要大家注意的是MATLA
25、B的下標(biāo)是可以多行、多列同時(shí)引用的,這和C語(yǔ)言每次只能引用一個(gè)是不同的。表3-3羅列了使用單下標(biāo)或全下標(biāo)訪問(wèn)矩陣的常用格式。,表3-3訪問(wèn)矩陣的常用格式,對(duì)于3?5的矩陣rad,可以采用單下標(biāo)引用它的元素,rad(k)是按列存儲(chǔ)的第k個(gè)元素。>> rad(5)ans =0.9595訪問(wèn)由向量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 如果試圖引用的下標(biāo)超出矩陣的下標(biāo)范圍,系統(tǒng)則會(huì)給出出錯(cuò)信息。>> rad(20)??? Index exceeds matrix dimensions.,對(duì)矩陣rad(i,j),如果將一個(gè)值賦給矩陣外的元素,MATLAB會(huì)自動(dòng)增加矩陣的大小,以容納這個(gè)新元素,而相應(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列對(duì)應(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個(gè)元素。>> rad(1,end-1)ans = 0.6787rad([2 1 3 3],[1 1 2 2 1])表示生成了一個(gè)按兩個(gè)向量引用指定的元素(可以重復(fù)訪問(wèn)向量中的元素),即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ù)組元素的運(yùn)算,3.4.1 基本數(shù)學(xué)運(yùn)算函數(shù),MATLAB基本數(shù)學(xué)運(yùn)算函數(shù)有三角函數(shù)、指數(shù)運(yùn)算函數(shù)、復(fù)數(shù)運(yùn)算函數(shù)、圓整和求余函數(shù),分別如表3-4、表3-5、表3-6、表3-7所示。需要說(shuō)明的是,這些函數(shù)的參數(shù)可以是矩陣,也可以是向量或者多維數(shù)組,函數(shù)在處理參數(shù)時(shí),都是按照數(shù)組運(yùn)算規(guī)則來(lái)進(jìn)行的。在MATLAB中還存在一類(lèi)函數(shù),用來(lái)獲取矩陣或數(shù)組的信息,以及對(duì)
32、矩陣(數(shù)組)進(jìn)行操作。表3-8中列出了較常用的操作函數(shù)。在MATLAB中,獲取基本運(yùn)算函數(shù),請(qǐng)使用MATLAB的在線(xiàn)幫助;在命令行窗口中輸入:,>> help elfun Elementary math functions. Trigonometric. sin - Sine. sind - Sine of argument in degrees.……有關(guān)每個(gè)函數(shù)
33、的具體使用語(yǔ)法,請(qǐng)參閱MATLAB的在線(xiàn)幫助文檔。,表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ù)運(yùn)算函數(shù),說(shuō)明:以real開(kāi)頭的函數(shù)僅能處理實(shí)數(shù)。realpow函數(shù)的語(yǔ)法為:Z = realpow(X,Y),是將實(shí)數(shù)矩陣X中的每個(gè)元素提高Y矩陣對(duì)應(yīng)元素的冪,其中X、Y矩陣同尺寸。Z矩陣為realpow的輸出實(shí)數(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ù),會(huì)報(bào)錯(cuò)??? 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ù)冪運(yùn)算函數(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、理類(lèi)推新生成的矩陣ans的2行3列,3行2列,3行3列元素為(-2)3、(-2)3、(-2)6。,nextpow2函數(shù)時(shí)用來(lái)計(jì)算僅僅比輸入?yún)?shù)大的2的冪。例如輸入?yún)?shù)為m,函數(shù)計(jì)算結(jié)果整數(shù)n需要滿(mǎn)足的條件 2 𝑛 ≥𝑎𝑏𝑠(𝑚)≥ 2 𝑛?1 。>> nextpow2(18)ans = 5,【例3.4-2】計(jì)算比僅僅
39、18大的2的冪。,表3-6指數(shù)運(yùn)算函數(shù),說(shuō)明:complex函數(shù)語(yǔ)法為z = complex(x,y) ,函數(shù)創(chuàng)建復(fù)數(shù)z,輸入的x,y必須同為變量或維數(shù)相同、相同數(shù)據(jù)類(lèi)型的向量、矩陣或者多維數(shù)組。輸出的結(jié)果跟輸入的維數(shù)相同,返回值為x+y*i;y=complex(x) 返回結(jié)果為實(shí)部為x,所有虛部為0的復(fù)數(shù),等價(jià)于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 %計(jì)算為度的單位ans = 67.8337>> conj(x)ans = 22.0000 -54.0000i,【例3.4-3】創(chuàng)建復(fù)數(shù)示例。,表3-7圓整和求余函數(shù),說(shuō)明:rem/mod(x,y),當(dāng)x與y具有相同符號(hào)時(shí),兩者相等;但是當(dāng)兩者符號(hào)不同,兩者不同。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ù),仍然運(yùn)行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ù)組的基本運(yùn)算,MATLAB對(duì)數(shù)組和矩陣提供了分別提供了運(yùn)算方法—“矩陣算法”和“數(shù)組算法”?!熬仃囁惴ā彼惴ㄊ前丫仃嚳醋鲆粋€(gè)整體,各種運(yùn)算完全按照線(xiàn)性代數(shù)中的矩陣運(yùn)算法則進(jìn)行,運(yùn)算的書(shū)寫(xiě)形式和運(yùn)算符號(hào)都與矩陣?yán)碚撏耆恢??!皵?shù)組算法”就是把矩陣看做由其元素構(gòu)成的一組“數(shù)組”,運(yùn)算時(shí)對(duì)應(yīng)元素之間
46、數(shù)與數(shù)的運(yùn)算。這種算法適用于大批數(shù)據(jù)的處理和一次求出多個(gè)函數(shù)值。在MATLAB中獲取矩陣(線(xiàn)性代數(shù))的運(yùn)算函數(shù),請(qǐng)?jiān)贛ATLAB命令行窗口輸入:>> help matfun Matrix functions - numerical linear algebra. Matrix analysis. norm - Matrix or vector norm.normest - Es
47、timate the matrix 2-norm.……,(1)矩陣的基本運(yùn)算表3-9列出了矩陣基本運(yùn)算及對(duì)應(yīng)的含義說(shuō)明,其中假設(shè)A、B為矩陣,a為標(biāo)量,【例3.4-4】求解方程組 ?𝑥+𝑦+2𝑧=2 3𝑥?𝑦?𝑧=6 ?𝑥+3𝑦+4𝑧=4 在數(shù)學(xué)上該方程可以寫(xiě)為: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運(yùn)行example34_1.m,X1 = 1.0000 -1.0000 2.0000X2 = 1.0000 -1.0000 2.0000,x1與x2相同,A\B相當(dāng)于矩陣方程AX=B的解,即inv(A)*B。而A/B相當(dāng)于矩陣方程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)建對(duì)角矩陣,對(duì)角元素為v向量,返回3+3階方陣Xy=diag(v) %向量v為主對(duì)角線(xiàn)元素,運(yùn)行后結(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、解,矩陣分解是將一個(gè)矩陣分解為幾個(gè)“較簡(jiǎn)單”矩陣的連乘積的形式。表3-10提供4種矩陣分解的函數(shù)。,①對(duì)稱(chēng)正定矩陣的Cholesky分解R=chol(A);對(duì)稱(chēng)正定矩陣的Cholesky分解,其中X為對(duì)稱(chēng)正定矩陣。Cholesky分解是把一個(gè)對(duì)稱(chēng)正定矩陣X分解為一個(gè)上三角矩陣R與其轉(zhuǎn)置的乘積,即X=R’*R。一個(gè)對(duì)稱(chēng)矩陣能夠進(jìn)行Cholesky分解的條件是矩陣是正定的,即矩陣所有對(duì)角元素都是正數(shù),同時(shí)矩陣非對(duì)角元素不會(huì)太大。例如x
59、=pascal(4),對(duì)其進(jìn)行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為一個(gè)方陣,L為“心里”下三角矩陣,U為上三角矩陣。LU分解是將任意一個(gè)方陣分解為一個(gè)“心里”下三角矩陣L與一個(gè)上三角矩陣U的乘積,即A=L*U?!靶睦铩毕氯蔷仃囀窍氯蔷仃嚺c置換矩陣的乘積。[L,U,P]=lu(A);A為一個(gè)方陣,L為下三角矩陣,U為上三角矩陣,P為置換矩陣;滿(mǎn)足P
61、*A=L*U的關(guān)系。在命令行窗口輸入A,并進(jìn)行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存儲(chǔ)的心里下三角矩陣,u存儲(chǔ)上三角矩陣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);對(duì)于m?n的矩陣A,如果存在m?m的酉矩陣U和n?n的酉矩陣V(酉矩陣即為滿(mǎn)足XHX=XXH=E, XH為X的共軛轉(zhuǎn)置矩陣),使得A=U*S*V,其中S為一個(gè)m?n的矩陣的非負(fù)對(duì)角矩陣,且對(duì)角元素值降序排列,則A=U*S*V為A的奇異值分解。U、S、V稱(chēng)為矩陣A的奇異值分解的三對(duì)組。在命令行窗口輸入A,并進(jìn)行奇異值分解:>>
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為正交矩陣。矩陣的正交分解是把一個(gè)m?n的矩陣A分解為一個(gè)正交矩陣Q和一個(gè)上三角矩陣R的乘積,即A=Q*R。因此矩陣的正交分解也稱(chēng)為QR分解。在命令行窗口輸入A,并進(jìn)行正交分解:>> [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)非線(xiàn)性矩陣運(yùn)算函數(shù),說(shuō)明:注意expm()、logm()、sqrtm()和exp()、log()、sqrt()的區(qū)別,前三個(gè)是針對(duì)矩陣,按矩陣運(yùn)算規(guī)則進(jìn)行運(yùn)算,而后三個(gè)是按數(shù)組規(guī)則進(jìn)行運(yùn)算的。,①矩陣指數(shù)運(yùn)算:如果矩陣X的特征向量為V,相應(yīng)的特
69、征值為D,即[V,D] = eig(X),那么 expm(X) = V*diag(exp(diag(D)))/V計(jì)算矩陣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,②矩陣對(duì)數(shù)運(yùn)算 矩陣對(duì)數(shù)運(yùn)算是矩陣指數(shù)運(yùn)算的逆運(yùn),logm(expm(A)) = A = exp
72、m(logm(A))。例如再對(duì)expm(A)矩陣進(jìn)行對(duì)數(shù)運(yùn)算。>> 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第三章基礎(chǔ)工程
- 第三章 matlab程序設(shè)計(jì)基礎(chǔ)
- matlab第三章答案
- 第三章 matlab程序設(shè)計(jì)基礎(chǔ)83644
- 第三章課件
- 第三章 數(shù)控機(jī)床的編程基礎(chǔ)
- 第三章 數(shù)控機(jī)床的編程基礎(chǔ)-(1869)
- 第三章 matlab程序設(shè)計(jì)
- 多元課件第三章
- 種植基礎(chǔ)第三章
- 第三章 工程分析
- 第三章基礎(chǔ)數(shù)據(jù)_secret
- 《會(huì)計(jì)基礎(chǔ)》第三章答案
- 第三章 matlab的數(shù)值計(jì)算功能
- 第三章(第4節(jié))算法與編程
- 第三章砌體工程
- 工程材料第三章
- 道路工程第三章
- 南郵系統(tǒng)工程課件第三章
- 材料科學(xué)與工程基礎(chǔ)第三章答案
評(píng)論
0/150
提交評(píng)論