MATLAB程式設計入門篇異質陣列_第1頁
MATLAB程式設計入門篇異質陣列_第2頁
MATLAB程式設計入門篇異質陣列_第3頁
MATLAB程式設計入門篇異質陣列_第4頁
MATLAB程式設計入門篇異質陣列_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1MATLAB 程式設計入門篇異質陣列張智星 (Roger Jang)臺大資工系 多媒體檢索實驗室MATLAB 程式設計入門篇:異質陣列2本章重點n異質陣列(Cell Arrays) nMATLAB 在第五版之後才支援的資料型態(tài) n主要功能n將不同的資料型態(tài)儲存於同一個陣列之中n本章重點n建立異質陣列n顯示異質陣列n取用異質陣列MATLAB 程式設計入門篇:異質陣列3異質陣列(Cell Arrays)n可儲存各種不同型態(tài)的 MATLAB 資料nCell Arrays = 盒子陣列?胞陣列?n異質 = 不同性質的資料型態(tài)MATLAB 程式設計入門篇:異質陣列4建立異質陣列 - Cell Inde

2、xing n做法:設定異值陣列的元素時,在元素值加上 nEx: cell01.MA(1,1) = This is the first cell.;A(1,2) = 5+j*6 , 4+j*5;A(2,1) = 1 2 3; 4 5 6; 7 8 9;A(2,2) = Tim; Chris MATLAB 程式設計入門篇:異質陣列5Cell-Indexing (cont)n上例建立了一個二維異質陣列A:2*2內容如下:A(1,1):This is the first cell字串A(1,2):5+j*6 4+j*51*2複數(shù)陣列A(2,1):1 2 34 5 67 8 93*3整數(shù)陣列A(2,2)

3、:Tim, Chris2*2異質陣列MATLAB 程式設計入門篇:異質陣列6建立異質陣列 - Content Indexing n做法:矩陣使用()來定址 異質陣列使用來定址 nEx: cell02.mA1,1 = this is the first cell.;A1,2 = 5+j*6, 4+j*5;A2,1 = 1 2 3; 4 5 6; 7 8 9;A2,2 = Tim; Chris 結果同上例MATLAB 程式設計入門篇:異質陣列7建立異質陣列 使用大括號 n第三種方法是直接用大括號一次把所有元素括起來nEx: B = James Bond, 1 2;3 4;5 6; pi, magi

4、c(5) B = James Bond, 1 2;3 4;5 6; pi, magic(5) C = rand(3), ones(2); zeros(5), randperm(4)C = rand(3), ones(2); zeros(5), randperm(4)B =James Bond 3x2 double 3.1416 5x5 doubleC = 3x3 double 2x2 double5x5 double 1x4 double MATLAB 程式設計入門篇:異質陣列8異值陣列的合併n對於異質陣列的合併,大致上跟陣列合併相同n範例如下 (B,C如上頁) : M = B C% 將異質陣

5、列 B 及 C 左右並排M = James Bond3x2 double3x3 double2x2 double 3.14165x5 double5x5 double1x4 double MATLAB 程式設計入門篇:異質陣列9異質陣列的內容顯示n若在 MATLAB 指令視窗內,直接呼叫異質陣列的名稱,MATLAB 通常不直接顯示異質陣列各元素的值,而只能顯示各元素的資料型態(tài)及維度n範例: A A = this is the first cell. 1x2 double 3x3 double 2x1 cell MATLAB 程式設計入門篇:異質陣列10Cellplot圖示型態(tài)n cellplo

6、t 指令可將異質陣列的內部資料型態(tài),以圖形的方式顯示nEx:cell03.mA1,1 = this is the first cell.;A1,2 = 5+j*6, 4+j*5;A2,1 = 1 2 3; 4 5 6; 7 8 9;A2,2 = Tim; Chris;cellplot(A)% 以圖形的方式顯示異質陣列 A 的內部資料型態(tài)MATLAB 程式設計入門篇:異質陣列11ResultTimChrisMATLAB 程式設計入門篇:異質陣列12celldisp顯示Ex: celldisp(A)% 顯示異質陣列 A 各個構成元素的實際內容A1,1 =this is the first cell

7、.A2,1 = 1 2 3 4 5 6 7 8 9A1,2 = 5.0000 + 6.0000i 4.0000 + 5.0000iA2,21 =TimA2,22 =ChrisMATLAB 程式設計入門篇:異質陣列13Content Indexing 顯示n先前提過建立異質陣列的方法 - Content Indexing,其實也可以用來直接將異質陣列 A 的各個構成元素內容一次全部顯示出來n用法:n要查看A的內容,在MATLAB下直接輸入: A:% 顯示異質陣列 A 的全部構成元素MATLAB 程式設計入門篇:異質陣列14Resultans =this is the first cell.ans

8、 =123456789ans =5.0000 + 6.0000i 4.0000 + 5.0000ans = TimChrisMATLAB 程式設計入門篇:異質陣列15異質陣列的內容取用n直接取用異質陣列的celln取用異值陣列的元素的內部構成單位n一次同時取用或刪除多個元素n異質陣列可以取代以逗點分開的變數(shù)列MATLAB 程式設計入門篇:異質陣列16直接取用異質陣列的cell (1/2)n以下例子先建立一個異質陣列 B,再取用其中第 1 橫列、第 2 直行的元素: B = James Bond, 1 2;3 4;5 6; pi, magic(5)B = James Bond 3x2 doubl

9、e 3.1416 5x5 double Hint: magic(n)可製造nxn大小的魔方陣MATLAB 程式設計入門篇:異質陣列17直接取用異質陣列的cell (2/2) F = B1,2% 取用異質陣列 B 的第 1 橫列、第 2 直行的元素Result:F =123456MATLAB 程式設計入門篇:異質陣列18取用異值陣列的元素的內部構成單位n先用 Content Indexing 的方法,再直接加上一般矩陣的索引法nEx: G = B1,2(3,1) G = 5 MATLAB 程式設計入門篇:異質陣列19同時取用或刪除多個元素n如上述異質陣列B H = B(2,:)%取用異質陣列 B

10、 的第一橫列所有元素H = 3.1416 5x5 double B(1,:) = %刪除異質陣列 B 的第一橫列所有元素B = 3.1416 5x5 doubleMATLAB 程式設計入門篇:異質陣列20取代以逗點分開的變數(shù)列Ex: %先建立一個維度為 14 的異質陣列 F = 2 3 5, 1 2 3, Timmy, Annie; F1:2 ans = 2 3 5ans = 1 2 3 MATLAB 程式設計入門篇:異質陣列21取代以逗點分開的變數(shù)列n上例中, F1:2 會指向 2 3 5, 1 2 3n可將之用於函數(shù)的輸入變數(shù)列,例如: plot(F1:2, -o)Result:22.53

11、3.544.551.82.83MATLAB 程式設計入門篇:異質陣列22取代以逗點分開的變數(shù)列(cont)n同理,亦可將之用於輸出變數(shù)列:nEx: F1:2 = max(rand(5)F = 1x5 double 1x5 double%F為一1x2的異質陣列MATLAB 程式設計入門篇:異質陣列23其他相關指令n改變異質陣列的大小n事先預設(Pre-Allocate)空的異質陣列n測試某一變數(shù)是否為異質陣列n將一數(shù)值陣列轉換成異質陣列n將一結構陣列的所有欄位值轉換成異質陣列n將異值陣列轉換為結構陣列n將一結構陣列的某一欄位值轉換成異質陣列MATLAB 程

12、式設計入門篇:異質陣列24改變異質陣列的大小n可使用:運算或reshapenEx:B為2x2異質陣列B = James Bond3x2 double 3.14165x5 doublenResult: M = B(:)M = James Bond 3.1416 3x2 double 5x5 double N = reshape(B,1,4)N = James Bond 3.1416 3x2 double 5x5 double MATLAB 程式設計入門篇:異質陣列25預設空的異質陣列n利用 cell 指令nEx: E = cell(4, 3)% 事先預設一個 43 空的異質陣列nResult:E

13、 = MATLAB 程式設計入門篇:異質陣列26測試某變數(shù)是否為異質陣列n可用iscell 指令nEx:iscell01.mC = 1,2,3; This is a test.;iscell(C)ans = 1Hint: 上例中,iscell 的執(zhí)行結果是傳回值 1,代表變數(shù) A 是一個異質陣列,若傳回值 0,則代表不是異質陣列。MATLAB 程式設計入門篇:異質陣列27數(shù)值陣列轉換成異質陣列 (1/5)nnum2cell 指令可將一數(shù)值陣列轉換成異質陣列, 其使用語法為:nC = num2cell(A, dim)n其中 dim 是代表 不變的維度,若不指定,則將每個元素視為異質陣列裡面的一個

14、 11 矩陣MATLAB 程式設計入門篇:異質陣列28將數(shù)值陣列轉換成異質陣列 (2/5)nEx:num2cell01.mA = 1 2 3;4 5 6;% 建立一個數(shù)值陣列 AC = num2cell(A)% 將數(shù)值陣列 A 轉成異質陣列 CC = 1 2 3 4 5 6MATLAB 程式設計入門篇:異質陣列29將數(shù)值陣列轉換成異質陣列 (3/5)n可以將上例數(shù)值陣列 A 中的每一直行, 轉成異質陣列 D 的元素nEx::num2cell02.mA = 1 2 3;4 5 6;% 建立的一個數(shù)值陣列 AD = num2cell(A, 1)% 1 代表橫列被切割D = 2x1 double 2

15、x1 double 2x1 doubleMATLAB 程式設計入門篇:異質陣列30將數(shù)值陣列轉換成異質陣列 (4/5)n也可以將數(shù)值陣列 A 的每一橫列, 轉成異質陣列 E 的元素nEx:num2cell03.mA = 1 2 3;4 5 6;% 建立的一個數(shù)值陣列 AE = num2cell(A, 2)% 2 代表直行被切割E = 1x3 double1x3 doubleMATLAB 程式設計入門篇:異質陣列31將數(shù)值陣列轉換成異質陣列 (5/5)n若需要更複雜的轉換,可以使用mat2cell指令nEx:X = 1 2 3 4; 5 6 7 8; 9 10 11 12C = mat2cell

16、(X,1 2,1 3)X = 1 2 3 4 5 6 7 8 9 10 11 12C = 1 1x3 double 2x1 double 2x3 doubleMATLAB 程式設計入門篇:異質陣列32將結構陣列轉換成異質陣列nstruct2cell 指令可將一結構陣列的所有欄位值轉換成異質陣列。nEx: = Tim;student.age = 8;%student為一structsCell = struct2cell(student)sCell = Tim 8MATLAB 程式設計入門篇:異質陣列33將異值陣列轉換為結構陣列n另外有一個 c

17、ell2struct 指令n可以將異值陣列轉換為結構陣列n詳細說明請參考本書的下一章結構陣列。MATLAB 程式設計入門篇:異質陣列34將結構陣列的某一欄位值轉換成異質陣列n使用 deal 指令nEx:deal01.mS = struct(name,Tim,Annie,age, 8,5); sCell1:length(S) = deal(S.name)sCell = Tim AnnieMATLAB 程式設計入門篇:異質陣列35deal 指令ndeal 指令的輸入及輸出引數(shù)需有相同個數(shù)n如上例中,sCell1:length(S) 的作用即是產生以逗點分開的輸出變數(shù)列。n善用 deal 指令,可達

18、成事半功倍之效,n以下欲列出 MATLAB 根目錄下所有目錄(不含檔案)MATLAB 程式設計入門篇:異質陣列36Ex:deal02.mdirInfo = dir(matlabroot);% 列出 MATLAB 的根目錄的各種資訊n = length(dirInfo);% 檔案及目錄的個數(shù)1:n = deal(dirI);% 包含檔案及目錄名稱dirs = (dirInfo.isdir)% dirs 包含各目錄名稱MATLAB 程式設計入門篇:異質陣列37Resultdirs = Columns 1 through 10. .bin demosexternhelpjajavanotebookrtwColumns 11 through 17simulink stateflowsys toolboxuninstall webserverworkMATLAB 程式設計入門篇:異質陣列38本章指令彙整

溫馨提示

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

評論

0/150

提交評論