2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB 程式設計入門篇矩陣的處理與運算,張智星 (Roger Jang)jang@mirlab.orghttp://mirlab.org/jang臺大資工系 多媒體檢索實驗室,9-1 矩陣的索引或下標,矩陣 A 中,位於第 i 橫列、第 j 直行的元素可表示為 A(i, j) i 與 j 即是此元素的下標(Subscript)或索引(Index) MATLAB 中,所有矩陣的內(nèi)部表示法都是以直行為主的一維向量A(i

2、, j) 和 A(i+(j-1)*m) 是完全一樣的,其中m為矩陣A的列數(shù) 我們可以使用一維或二維下標來存取矩陣,Quiz,Suppose that A is a 2-dimensional array of size m×n.Given A(i, j), how to find the linear index y such that A(y) = A(i, j)?Given A(y), how to find i a

3、nd j such that A(i, j)=A(y)?,矩陣的索引或下標,,,矩陣的索引或下標,可以使用矩陣下標來進行矩陣的索引(Indexing)A(4:5,2:3) -取出矩陣 A 的 第四、五 橫列與 二、三 直行所形成的部份矩陣A([9 14; 10 15]) - 用一維下標的方式來達到同樣目的 用冒號(:), 取出一整列或一整行 A(:, 5) -取出矩陣 A 的第五個直行 用 end 這個保留字來代表某一維度

4、的最大值 A(:, end) - 矩陣 A 的最後一個直行 可以直接刪除矩陣的某一整個橫列或直行 A(2, :) = [] – 刪除A矩陣的第二列 A(:, [2 4 5]) = [] - 刪除 A 矩陣的第二、四、五直行,矩陣的索引或下標,可把矩陣 A 和其倒數(shù)「並排」起來,得到新矩陣 B B = [A 1./A] % 1./A 是矩陣 A 每個元素的倒數(shù)用 diag 指令取出矩陣的對角線各元素 D = diag(B

5、)% 取出矩陣 B 的對角線元素D = diag(v)% 產(chǎn)生以向量 v 為主對角線的方陣E = A*diag(v)% 將矩陣A的每個行向量乘上向量v的元素E = diag(v)*A% 將矩陣A的每個列向量乘上向量v的元素用 reshape 指令來改變一個矩陣的維度 B = B(1:4, 1:4);C = reshape(B, 2, 8)% 將矩陣 B 排成 2×8 的新矩陣 CMATLAB 會先將矩陣

6、 B 排成一個行向量(即 MATLAB 內(nèi)部的矩陣表示法),再將此行向量塞成 2×8 的新矩陣,9-2 特殊用途矩陣,產(chǎn)生各種特殊用途矩陣的好用指令 :,Hilbert矩陣 & 魔方陣,hilb(n) 指令可以產(chǎn)生 n×n 的 Hilbert 矩陣 Hilbert 矩陣的特性: 當矩陣變大時,其反矩陣會接近 Singular(即矩陣的行列式會接近於 0)Hilbert 矩陣常被用來評估各種反矩陣計算方

7、法的穩(wěn)定性 magic(n) 可以產(chǎn)生一個 n×n 的魔方陣(Magic Matrix),其各個直行、橫列及兩對角線的元素值總和都相等,,均勻和高斯分布,rand 指令及 randn 指令則常用於產(chǎn)生亂數(shù)矩陣 範例9-11: matrix11.m,9-3矩陣的數(shù)學運算,矩陣的加減與一般純量(Scalar)的加減類似 相加或相減的矩陣必需具有相同的維度 範例9-12: matrix12.mC =

8、 13 37 58 24 矩陣與純量可以直接進行加減,MATLAB 會直接將加減應用到每一個元素 >> A = [1 2 3 2 1] + 5 A = 6 7 8 7 6,矩陣的乘法與除法,純量對矩陣的乘或除,可比照一般寫法 >> A = [123 , 442]; >> C = A/3 >

9、;> B = 2*A C = B = 41.0000 147.3333 246 884 欲進行矩陣相乘,必需確認第一個矩陣的直行數(shù)目( Column Dimension) 必需等於第二個矩陣的橫列數(shù)目(Row Dimension) 範例9-13: matrix12.m C = 3 4 5 6 8

10、 10 矩陣的除法,常藉由反矩陣或解線性方程式來達成,矩陣的次方運算,矩陣的次方運算,可由「^」來達成,但矩陣必需是方陣,其次方運算才有意義 範例9-14: matrix14.m B = 91 67 67 67 91 67 67 67 91 在「*」,「/」及「^」之前加上一個句點,MATLAB 將會執(zhí)行矩陣內(nèi)「元素對元素」(Element-

11、by-element) 的運算,轉置和「共軛轉置」矩陣,複數(shù)矩陣 z,其「共軛轉置」矩陣(Conjugate Transpose) 可表示成矩陣 z' 範例9-16: conjTranspose01.mw = 1.0000-1.0000i 3.0000 2.0000 1.0000-2.0000i 想得到任何矩陣 z 的轉置(Transpose),則可表

12、示成矩陣 z. ' 範例9-17: transpose01.mw = 1.0000+1.0000i 3.0000 2.0000 1.0000+2.0000i若 z 為實數(shù),則 z' 和 z.' 的結果是一樣的,向量的Lp-norm,一個向量 a 的 Lp-norm 可以定義為p=1 ? taxicab distance, or M

13、anhattan distancep=2 ? Euclidean Length (length of a) P=inf ? max. distance 欲求一向量的 p-norm,可使用 norm 指令 norm(x,p)範例9-18: normVector01.m,,,Quiz!,Quiz for Lp-norm,ProveOn a 2D space, plot the trajectory of,,,矩陣的Lp-nor

14、m,一個矩陣 A 的 Lp-norm 可以定義如下:norm 指令亦可用於計算矩陣的 Lp-norm範例9-19: normMatrix01.m MATLAB 有相當完整的數(shù)學函數(shù),三角函數(shù)還有計算向量元素統(tǒng)計量的函數(shù)(課本 9-15~9-17),,Sort指令,sort 指令可對向量元素進行排序(Sorting) 範例9-20: sort01.msorted = 1 3 4

15、 5 8index = 4 1 5 2 3sorted 是排序後的向量,index 則是每個排序後的元素在原向量 x 的位置,因此 x(index) 即等於 sorted 向量。 如何使用 sort 指令加上前例中的 sorted 及 index 來求得原先的向量 x?,Exerrcise!,矩陣的最大元素,找出一矩陣最大元素的位置 範例9-21: max01.m

16、 colMax = 23 24 25 21 22colMaxIndex = 2 1 5 4 3colMax 代表每一直行的最大值,colMaxIndex 則是每一直行出現(xiàn)最大值的位置 求得 x 的最大元素的位置 範例9-22: max02.mMax value = x(5, 3) = 25x 的最

17、大元素即是 maxValue,發(fā)生位置為 [colMaxIndex(maxIndex), maxIndex] = [5 , 3] 若只要找出一矩陣 x 的最大值,可輸入 max(max(x))或是 max(x(:)),9-4 矩陣的內(nèi)部資料型態(tài),一般矩陣的內(nèi)部資料型態(tài)都是 double(雙精準浮點數(shù)),但在 MATLAB 5.3 版之後,也支援不同長度的整數(shù)與浮點數(shù)資料態(tài),不同資料的儲存,我們要節(jié)省記憶體空間,可以依矩陣元素值的範

18、圍,選用不同的資料來儲存 範例9-23: datatype01.mName Size Bytes Class x16 10x10 200 uint16 array x32 10x10 400 uint32 array x8

19、 10x10 100 uint8 array x_double 10x10 800 double array x_single 10x10 400 single arrayGrand total is 500 elements using 1900 bytes

20、 uint8 來儲存變數(shù)所佔的空間只有 double 的八分之一 !,資料儲存的注意事項,整數(shù)資料型態(tài)的範圍有限,若超過此範圍,則超出部分將會被「裁掉」>> uint8(300)% uint8 的最大值為 255 ans = 255 >> int8(-500)% int8 的最小值為 -128 ans = -128 整數(shù)資料型態(tài)可以比較大小,亦可直接進行數(shù)學運算,但必須注意其資

21、料型態(tài)的自動轉換: >> uint8(20)== 20% 可比較大小 ans = 1 >> z=uint8(magic(3))>> z*2.5(Please try it by yourself to get the conversion rule!) 若要進行精準的數(shù)學運算,需先用 double 指令將整數(shù)型態(tài)之變數(shù)轉成雙倍精準浮點數(shù),Interestin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論