張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室

Slides:



Advertisements
Similar presentations
MATLAB 程式設計入門篇 矩陣的處理與運算 張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室.
Advertisements

認識食品標示 東吳大學衛生保健組製作.
張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室
第八章 互换的运用.
无效宣告请求书与 意见陈述书代理实务 国家知识产权局专利复审委员会
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 程式計時 張智星 清大資工系.
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
計算機程式語言實習課.
颞下颌关节常见病.
致理科技大學保險金融管理系 實習月開幕暨頒獎典禮
結腸直腸腫瘤的認知.
經歷復活的愛 約翰福音廿一1-23.
郭詩韻老師 (浸信會呂明才小學音樂科科主任)
Introduction to Matlab
2. 戰後的經濟重建與復興 A. 經濟重建的步驟與措施 1.
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
好好學習 標點符號 (一) 保良局朱正賢小學上午校.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
第四章 地理資訊與地理資訊系統.
4. 聯合國在解決國際衝突中扮演的角色 C. 聯合國解決國際衝突的個案研究.
新陸書局股份有限公司 發行 第十九章 稅捐稽徵法 稅務法規-理論與應用 楊葉承、宋秀玲編著 稅捐稽徵程序.
資料結構 第2章 陣列.
民法第四章:權利主體 法人 楊智傑.
范洪源 臺灣師範大學數學系 MATLAB 基本功能介紹 范洪源 臺灣師範大學數學系.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
黃聰明 國立臺灣師範大學數學系 MATLAB 基本功能介紹 黃聰明 國立臺灣師範大學數學系
Wavelet transform 指導教授:鄭仁亮 學生:曹雅婷.
結構陣列 (Structure Array)
張智星 清大資工系 多媒體檢索實驗室 MATLAB小傳與外觀 張智星 清大資工系 多媒體檢索實驗室.
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
Chap3 Linked List 鏈結串列.
四年級 中 文 科.
MATLAB陣列之輸入與處理 資管碩一 蘇柏屹.
陣列(Array).
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計進階篇 線性代數 張智星 清大資工系.
MATLAB 程式設計入門篇 二維平面繪圖 (part2)
張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室
聖誕禮物 歌羅西書 2:6-7.
MATLAB 程式設計入門篇 初探MATLAB
張智星 (Roger Jang) 台大資工系 多媒體檢索實驗室
張智星 清大資工系 多媒體檢索實驗室 Tree Net Construction 張智星 清大資工系.
第 2 章 陣列(Array)與矩陣(Matrix)的運算
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計 第11章 多維陣列 張智星 清大資工系.
第一次Labview就上手 參考書籍: LabVIEW for Everyone (Jeffrey Travis/Jim Kring)
CH05. 選擇敘述.
張智星 (Roger Jang) 清大資工系 多媒體檢索實驗室
GridView操作 (II).
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
函數應用(二)與自定函數.
依撒意亞先知書 第一依撒意亞 公元前 740 – 700 (1 – 39 章) 天主是宇宙主宰,揀選以民立約,可惜他們犯罪遭
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
1757: Secret Chamber at Mount Rushmore
Parasitics Extraction (PEX) 與 postsimulation(posim)
語音訊號的特徵向量 張智星 多媒體資訊檢索實驗室 清華大學 資訊工程系.
Quiz1 繳交期限: 9/28(四).
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Array(陣列) Anny
Chapter 4 Multi-Threads (多執行緒).
經文 : 創世紀一章1~2,26~28 創世紀二章7,三章6~9 主講 : 周淑慧牧師
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
張智星 清大資工系 多媒體檢索實驗室 MATLAB 程式設計入門篇 程式流程控制 張智星 清大資工系.
張智星 台大資工系 MIR實驗室 第23章 程式碼的重複使用 張智星 台大資工系 MIR實驗室.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室 MATLAB 程式設計 多維陣列 張智星 (Roger Jang) jang@mirlab.org http://mirlab.org/jang 台大資工系 多媒體檢索實驗室

11-1 多維陣列的定義 在 MATLAB 的資料型態中: 一維陣列稱為向量(Vectors) 二維陣列稱為矩陣(Matrices) 維度(Dimensions)超過 1 的陣列則均可視為「多維陣列」(Multidimesional Arrays,簡稱 N-D Arrays)。

二維陣列 (I) 二維陣列又簡稱矩陣,具有兩個維度 橫列(Row) 直行(Column) 直行 (1,1) (1,2) (1,3) (1,4) (2,1) (2,2) (2,3) (2,4) (3,1) (3,2) (3,3) (3,4) 橫列

二維陣列 (II) 二維陣列可對應至一個 X-Y 二維平面座標,圖示如下: Y(行) X(列)

三維陣列 (I) 將兩個矩陣疊在一起,就形成第三個維度,此第三個維度可稱為「頁」(Page),圖示如下: (1,1) (1,2) (1,3) (1,4) (2,1) (2,2) (2,3) (2,4) (3,4) 頁 (1,1) (1,2) (1,3) (1,4) (2,1) (2,2) (2,3) (2,4) (3,1) (3,2) (3,3) (3,4) 列 頁 行

三維陣列 (II) 三維陣列可對應至一個 X - Y - Z 三維立體座標,圖示如下: Y(行) X(列) Z(頁)

三維陣列 (III) 三維陣列定址,可以 (列,行,頁) 定之。 以維度為 3×4×2 的三維陣列為例,其定址方式可圖示如下: 陣列 A 是三維陣列,其中 A(:,:,1)代表第一頁的二維陣列,A(:,:,2)代表第二頁的二維陣列。

四維陣列 四維陣列的第四個維度可視為「箱」(Box),而每個箱是由一個三維陣列所組成,其定址方式為 (列,行,頁,箱)。 例如:一個 2×2×3×5 的四維陣列,可表示成 5 個箱,每個箱都由一個 2×2×3 的三維陣列所組成,圖示如下: 依此可類推至 n 維陣列,n 為任意自然數。

11-2 多維陣列的建立 欲建立一個簡單的多維陣列,可直接由 MATLAB 指令視窗內輸入 範例11-1:mDim01.m 1 0 2 5 4 1 8 7 3 2 6 3 A(:,:,2) = 3 5 4 1 2 6 2 1 4 2 3 0

多維陣列直接設定 範例11-2 (I) 上例是先建立一個二維陣列 A ,再輸入第二頁的二維陣列 A(:,:,2) ,如此逐頁輸入二維陣列的內容,即可建立三維陣列。 如果直接設定某一個新頁的一個元素值,此時MATLAB 會將此頁其他未指定之元素直接設定為 0 ,範例如下:

多維陣列直接設定 範例11-2 (II) 範例11-2:mDim02.m A = [1 0 2 5; 4 1 8 7; 3 2 6 3]; 1 0 2 5 4 1 8 7 3 2 6 3 A(:,:,2) = 3 5 4 1 2 6 2 1 4 2 3 0 A(:,:,3) = 0 0 0 0 5 0 0 0

純量展開功能 (Scalar Expansion) (I) MATLAB 第五版新增純量展開 (Scalar Expansion) 功能,直接設定一個純量給多維陣列的一頁。 承接上述範例,若要將陣列 A 的第二頁所有元素設為 7,可輸入如下:

純量展開功能 (Scalar Expansion) (II) 1 0 2 5 4 1 8 7 3 2 6 3 A(:,:,2) = 7 7 7 7 A(:,:,3) = 0 0 0 0 5 0 0 0

垂直並排多維陣列 範例11-3 (I) 對於較複雜的多維陣列,可用 cat 指令來建立,其功能為「並排」數個陣列,並可指定「並排」時所用的維度  其指令格式如下: Z = cat(dim, A, B, C…) A、B、C 為陣列 dim 是將 A、B、C… 合併時所用到的維度。(亦即在合併後,此維度的大小會改變。)

垂直並排多維陣列 範例11-3 (II) 欲將矩陣 A 與 B 上下(垂直)並排 範例11-3:cat01.m Z = cat(1, A, B) % 數字 1 表示將陣列 A 與 B 上下垂直並排 Z = 1 2 3 4 1 0 0 1

水平並排多維陣列 範例11-4 欲將陣列 A 與 B 左右(水平)並排 範例11-4:cat02.m A = [1 2; 3 4]; Z = cat(2, A, B) % 數字 2 表示將陣列 A 與 B 左右水平並排 Z = 1 2 1 0 3 4 0 1

陣列堆疊 – 範例11-5 將陣列 A 與 B 疊起來,得到一個三維陣列 範例11-5:cat03.m A = [1 2; 3 4]; Z = cat(3, A, B) % 數字3表示將陣列 A 與 B 重疊排成三維陣列 Z(:,:,1) = 1 2 3 4 Z(:,:,2) = 1 0 0 1

cat自動補齊維度 – 範例11-6 所設定的 dim 值比陣列 A、B、C…的各自原先的「維度數」(Dimensionality)還要超出 2 或更多,MATLAB 會自動補上大小為 1 的維度 此時陣列 Z 的維度變為 2×2×1×2 範例11-6:cat04.m A = [1 2; 3 4]; B = [1 0; 0 1]; Z = cat(4, A, B) % 數字 4 表示將陣列 A 與 B 放在相鄰的兩「箱」 Z(:,:,1,1) = 1 3 2 4 Z(:,:,1,2) = 1 2 1 1

亂數陣列 (I) MATLAB 可產生特殊用途的多維陣列 要產生一個維度是 2×3×5 的亂數陣列,可用 rand 指令 >> A = rand(2, 3, 5) A(:,:,1) = 0.3412 0.7271 0.8385 0.5341 0.3093 0.5681 A(:,:,2) = 0.3704 0.5466 0.6946 0.7027 0.4449 0.6213

亂數陣列 (II) 類似的指令,詳見本書第九章「矩陣的處理與運算」的第二節「特殊用途矩陣」 A(:,:,3) = 0.7948 0.5226 0.1730 0.9568 0.8801 0.9797 A(:,:,4) = 0.2714 0.8757 0.1365 0.2523 0.7373 0.0118 A(:,:,5) = 0.8939 0.2987 0.2844 0.1991 0.6614 0.4692 類似的指令,詳見本書第九章「矩陣的處理與運算」的第二節「特殊用途矩陣」

11-3 多維陣列的數學運算 許多用於向量和矩陣的數學運算,例如 sum、max、min、mean 等,也都可以用在多維陣列。 在使用這些指令時,我們必須指定這些指令的操作是在哪一個維度。

多維陣列運算 維度指定 範例11-7 (I) 範例11-7:sum01.m A = [1 1 1 1; 2 2 2 2; 3 3 3 3]; B = [0 0 0 0; 1 1 1 1; 1 2 3 4]; Z = cat(3, A, B); % 將矩陣 A, B 疊成一個三維陣列 S = sum(Z, 1) % 根據第一維度來對元素進行相加 size(S) S(:,:,1) = 6 6 6 6 S(:,:,2) = 2 3 4 5 ans = 1 4 2

多維陣列運算 維度指定 範例11-7 (II) 上述範例,矩陣 Z 的大小是 3×4×2,sum(Z, 1) 是根據第一個維度來進行相加,因此第一個維度值就會被被壓成是 1,因此 size(S) 所傳回的值是 [1, 4, 2],代表矩陣 S 的大小是 1×4×2 sum(Z) 的預設相加維度即是 1,因此 sum(Z) 和 sum(Z, 1) 所得到的結果是一樣的。

多維陣列運算 維度指定 範例11-8 (I) 對第二個維度進行相加,可見下列範例。 範例11-8:sum02.m A = [1 1 1 1; 2 2 2 2; 3 3 3 3]; B = [0 0 0 0; 1 1 1 1; 1 2 3 4]; Z = cat(3, A, B); % 將矩陣 A, B 疊成一個三維陣列 S = sum(Z, 2) % 根據第二維度來對元素進行相加 size(S) S(:,:,1) = 4 8 12

多維陣列運算 維度指定 範例11-8 (II) 在上述範例中,sum(Z, 2)是對第二個維度進行相加運算,因此所傳回的矩陣 S 的維度是 3×1×2。 sum(z, 3) 的結果請依此類推。 S(:,:,2) = 4 10 ans = 3 1 2

Quiz An array Z can be created by the following statements: What are the sizes of the returned arrays of the following statements? sum(Z, 1) 3 4 2  1 4 2 sum(Z, 2) 3 4 2  3 1 2 sum(Z, 3) 3 4 2  3 4 1 or 3 4 A = [1 1 1 1; 2 2 2 2; 3 3 3 3]; B = [0 0 0 0; 1 1 1 1; 1 2 3 4]; Z = cat(3, A, B);

sum的累加–範例11-9 (I) 執行sum(Z)時,如果預設要相加的維度只有單一維度,那麼 sum 指令會對下一個維度進行相加的動作, sum(sum(Z)) 將會得到三維陣列 Z 的每一頁的總和。 sum(sum(sum(Z))) 或 sum(Z(:)) 可得到三維陣列 Z 的總和。

sum的累加–範例11-9 (II) 範例11-9:sumSum01.m 與 sum 類似的指令還有 max、min、mean、median、mode、std、diff、sort 等,可以參考第九章的第三小節「矩陣的數學運算」。 A = [1 1 1 1; 2 2 2 2; 3 3 3 3]; B = [0 0 0 0; 1 1 1 1; 1 2 3 4]; Z = cat(3, A, B); % 將矩陣 A, B 疊成一個三維陣列 S = sum(sum(Z)) S(:,:,1) = 24 S(:,:,2) = 14