12-異質(zhì)陣列.ppt_第1頁
12-異質(zhì)陣列.ppt_第2頁
12-異質(zhì)陣列.ppt_第3頁
12-異質(zhì)陣列.ppt_第4頁
12-異質(zhì)陣列.ppt_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB 程式設計入門篇異質(zhì)陣列,張智星 .tw .tw/jang 清大資工系 多媒體檢索實驗室,本章重點,異質(zhì)陣列(Cell Arrays) MATLAB 在第五版之後才支援的資料型態(tài) 主要功能 將不同的資料型態(tài)儲存於同一個陣列之中 本章重點 建立異質(zhì)陣列 顯示異質(zhì)陣列 取用異質(zhì)陣列,異質(zhì)陣列(Cell Arrays),可儲存各種不同型態(tài)的 MATLAB 資料 Cell Arrays = 盒子陣列!? 異質(zhì) = 不同性質(zhì)的資料型態(tài),建立異質(zhì)陣列 - Cell Indexing,Ex:cell01.M,A(1,1) =

2、 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,Cell-Indexing (cont),上例建立了一個二維異質(zhì)陣列A:2*2內(nèi)容如下:,建立異質(zhì)陣列 - Content Indexing,做法:矩陣() 異質(zhì)陣列 Ex:cell02.m,A1,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,結果同上例

3、,建立異質(zhì)陣列 使用大括號 ,第三種方法是直接用大括號一次把所有元素括起來 Ex:, B = James Bond, 1 2;3 4;5 6; pi, magic(5) C = rand(3), ones(2); zeros(5), randperm(4),B =James Bond 3x2 double 3.1416 5x5 double C = 3x3 double 2x2 double 5x5 double 1x4 double,異值陣列的合併,對於異質(zhì)陣列的合併,大致上跟陣列合併相同 Ex:(B,C如上頁), M = B C% 將異質(zhì)陣列 B 及 C 左右並排 M = James Bo

4、nd3x2 double3x3 double2x2 double 3.14165x5 double5x5 double1x4 double,異質(zhì)陣列的內(nèi)容顯示,直接呼叫?=maybe not 若在 MATLAB 指令視窗內(nèi),直接呼叫異質(zhì)陣列的名稱,MATLAB 並不直接顯示異質(zhì)陣列各元素的值, 只能顯示各元素的資料型態(tài)及維度 Ex: A,Result,A = 1x23 char 1x2 double 3x3 double2x1 cell ,Cellplot圖示型態(tài),cellplot 指令可將異質(zhì)陣列的內(nèi)部資料型態(tài),以圖形的方式顯示 Ex:cell03.m,A1,1 = this is the

5、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)% 以圖形的方式顯示異質(zhì)陣列 A 的內(nèi)部資料型態(tài),Result,celldisp顯示,Ex: celldisp(A)% 顯示異質(zhì)陣列 A 各個構成元素的實際內(nèi)容,A1,1 = this is the first cell. A2,1 = 1 2 3 4 5 6 7 8 9 A1,2 = 5.0000 + 6.0000i 4.0000 + 5.0000i A2,21 = Tim A2,22 = Chris,Cont

6、ent Indexing顯示,先前提過建立異質(zhì)陣列的方法 - Content Indexing,其實也可以用來直接將異質(zhì)陣列 A 的各個構成元素內(nèi)容一次全部顯示出來 用法: 要查看A的內(nèi)容,在MATLAB下直接輸入: A:% 顯示異質(zhì)陣列 A 的全部構成元素,Result,ans = this is the first cell. ans = 123 456 789 ans = 5.0000 + 6.0000i 4.0000 + 5.0000 ans = Tim Chris,異質(zhì)陣列的內(nèi)容取用,直接取用異質(zhì)陣列的cell 取用異值陣列的元素的內(nèi)部構成單位 一次同時取用或刪除多個元素 異質(zhì)陣列可

7、以取代以逗點分開的變數(shù)列,直接取用異質(zhì)陣列的cell,以下例子先建立一個異質(zhì)陣列 B,再取用其中第 1 橫列、第 2 直行的元素:, B = James Bond, 1 2;3 4;5 6; pi, magic(5),B = James Bond 3x2 double 3.1416 5x5 double,p.s.magic(n)可製造nxn大小的魔方陣,直接取用異質(zhì)陣列的cell (cont), F = B1,2 % 取用異質(zhì)陣列 B 的第 1 橫列、第 2 直行的元素 Result:,F = 12 34 56,取用異值陣列的元素的內(nèi)部構成單位,先用 Content Indexing 的方法,

8、再直接加上一般矩陣的索引法 Ex: G = B1,2(3,1),G = 5,同時取用或刪除多個元素,如上述異質(zhì)陣列B, H = B(2,:)%取用異質(zhì)陣列 B 的第一橫列所有元素 H = 3.1416 5x5 double B(1,:) = %刪除異質(zhì)陣列 B 的第一橫列所有元素 B = 3.1416 5x5 double,取代以逗點分開的變數(shù)列,Ex: %先建立一個維度為 14 的異質(zhì)陣列 F = 2 3 5, 1 2 3, Timmy, Annie; F1:2 ans = 2 3 5 ans = 1 2 3,取代以逗點分開的變數(shù)列,上例中, F1:2 會指向 2 3 5, 1 2 2 可將

9、之用於函數(shù)的輸入變數(shù)列,例如: plot(F1:2, -o) Result:,取代以逗點分開的變數(shù)列(cont),同理,亦可將之用於輸出變數(shù)列: Ex: F1:2 = max(rand(5),F = 1x5 double 1x5 double %F為一1x2的異質(zhì)陣列,其他相關指令,改變異質(zhì)陣列的大小 事先預設(Pre-Allocate)空的異質(zhì)陣列 測試某一變數(shù)是否為異質(zhì)陣列 將一數(shù)值陣列轉(zhuǎn)換成異質(zhì)陣列 將一結構陣列的所有欄位值轉(zhuǎn)換成異質(zhì)陣列 將異值陣列轉(zhuǎn)換為結構陣列 將一結構陣列的某一欄位值轉(zhuǎn)換成異質(zhì)陣列,改變異質(zhì)陣列的大小,可使用:運算或reshape Ex:B為2x2異質(zhì)陣列 B =

10、James Bond3x2 double 3.14165x5 double Result:, 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,預設空的異質(zhì)陣列,利用 cell 指令 Ex: E = cell(4, 3) % 事先預設一個 43 空的異質(zhì)陣列 Result:,E = ,測試某變數(shù)是否為異質(zhì)陣列,可用iscell 指令 Ex:iscell01.m,C = 1,2,3; This is a test.

11、; iscell(C),ans = 1,上例中,iscell 的執(zhí)行結果是傳回值 1,代表變數(shù) A 是一個異質(zhì)陣列,若傳回值 0,則代表不是異質(zhì)陣列。,將數(shù)值陣列轉(zhuǎn)換成異質(zhì)陣列,num2cell 指令可將一數(shù)值陣列轉(zhuǎn)換成異質(zhì)陣列, 其使用語法為: C = num2cell(A, dim) 其中 dim 是代表 被切割的維度,若不指定,則將每個元素視為異質(zhì)陣列裡面的一個 11 矩陣,將數(shù)值陣列轉(zhuǎn)換成異質(zhì)陣列(cont),Ex:num2cell01.m,A = 1 2 3;4 5 6;% 建立一個數(shù)值陣列 A C = num2cell(A)% 將數(shù)值陣列 A 轉(zhuǎn)成異質(zhì)陣列 C,C = 1 2 3

12、4 5 6,將數(shù)值陣列轉(zhuǎn)換成異質(zhì)陣列(cont),可以將上例數(shù)值陣列 A 中的每一直行, 轉(zhuǎn)成異質(zhì)陣列 D 的元素 Ex::num2cell02.m,A = 1 2 3;4 5 6;% 建立的一個數(shù)值陣列 A D = num2cell(A, 1)% 1 代表橫列被切割,D = 2x1 double 2x1 double 2x1 double,將數(shù)值陣列轉(zhuǎn)換成異質(zhì)陣列(cont),也可以將數(shù)值陣列 A 的每一橫列, 轉(zhuǎn)成異質(zhì)陣列 E 的元素 Ex:num2cell03.m,A = 1 2 3;4 5 6;% 建立的一個數(shù)值陣列 A E = num2cell(A, 2)% 2 代表直行被切割,E

13、= 1x3 double 1x3 double,將結構陣列轉(zhuǎn)換成異質(zhì)陣列,struct2cell 指令可將一結構陣列的所有欄位值轉(zhuǎn)換成異質(zhì)陣列。 Ex:struct2cell01.m, = Tim; student.age = 8;%student為一struct sCell = struct2cell(student),sCell = Tim 8,將異值陣列轉(zhuǎn)換為結構陣列,另外有一個 cell2struct 指令 可以將異值陣列轉(zhuǎn)換為結構陣列 詳細說明請參考本書的下一章結構陣列。,將結構陣列的某一欄位值轉(zhuǎn)換成異質(zhì)陣列,使用 deal 指令 Ex:deal01.m,S

14、= struct(name,Tim,Annie,age, 8,5); sCell1:length(S) = deal(S.name),sCell = Tim Annie,deal 指令,deal 指令的輸入及輸出引數(shù)需有相同個數(shù) 如上例中,sCell1:length(S) 的作用即是產(chǎn)生以逗點分開的輸出變數(shù)列。 善用 deal 指令,可達成事半功倍之效, 以下欲列出 MATLAB 根目錄下所有目錄(不含檔案),Ex:deal02.m,dirInfo = dir(matlabroot); % 列出 MATLAB 的根目錄的各種資訊 n = length(dirInfo); % 檔案及目錄的個數(shù) fileAndDir1:n = deal(dirI); %

溫馨提示

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

最新文檔

評論

0/150

提交評論