MATLAB程式设计入门篇异质阵列.ppt

上传人:牧羊曲112 文档编号:5439239 上传时间:2023-07-07 格式:PPT 页数:38 大小:314.49KB
返回 下载 相关 举报
MATLAB程式设计入门篇异质阵列.ppt_第1页
第1页 / 共38页
MATLAB程式设计入门篇异质阵列.ppt_第2页
第2页 / 共38页
MATLAB程式设计入门篇异质阵列.ppt_第3页
第3页 / 共38页
MATLAB程式设计入门篇异质阵列.ppt_第4页
第4页 / 共38页
MATLAB程式设计入门篇异质阵列.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《MATLAB程式设计入门篇异质阵列.ppt》由会员分享,可在线阅读,更多相关《MATLAB程式设计入门篇异质阵列.ppt(38页珍藏版)》请在三一办公上搜索。

1、MATLAB 程式設計入門篇異質陣列,張智星(Roger Jang)http:/mirlab.org/jang台大資工系 多媒體檢索實驗室,本章重點,異質陣列(Cell Arrays)MATLAB 在第五版之後才支援的資料型態 主要功能將不同的資料型態儲存於同一個陣列之中本章重點建立異質陣列顯示異質陣列取用異質陣列,異質陣列(Cell Arrays),可儲存各種不同型態的 MATLAB 資料Cell Arrays=盒子陣列?胞陣列?異質=不同性質的資料型態,建立異質陣列-Cell Indexing,做法:設定異值陣列的元素時,在元素值加上 Ex:cell01.M,A(1,1)=This is

2、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),上例建立了一個二維異質陣列A:2*2內容如下:,建立異質陣列-Content Indexing,做法:矩陣使用()來定址 異質陣列使用來定址 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、元素括起來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 doubleC=3x3 double 2x2 double5x5 double 1x4 double,異值陣列的合併,對於異質陣列的合併,大致上跟陣列合併相同範例如下(B,C如上頁):,M=B C%將異質陣列 B 及 C 左右並排M=James Bond3x2 double3x3 double2x2 double 3.14165x5 double5x5 dou

4、ble1x4 double,異質陣列的內容顯示,若在 MATLAB 指令視窗內,直接呼叫異質陣列的名稱,MATLAB 通常不直接顯示異質陣列各元素的值,而只能顯示各元素的資料型態及維度範例:A A=this is the first cell.1x2 double 3x3 double 2x1 cell,Cellplot圖示型態,cellplot 指令可將異質陣列的內部資料型態,以圖形的方式顯示Ex:cell03.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;cellp

5、lot(A)%以圖形的方式顯示異質陣列 A 的內部資料型態,Result,celldisp顯示,Ex:celldisp(A)%顯示異質陣列 A 各個構成元素的實際內容,A1,1=this is the first cell.A2,1=1 2 3 4 5 6 7 8 9A1,2=5.0000+6.0000i 4.0000+5.0000iA2,21=TimA2,22=Chris,Content Indexing 顯示,先前提過建立異質陣列的方法-Content Indexing,其實也可以用來直接將異質陣列 A 的各個構成元素內容一次全部顯示出來用法:要查看A的內容,在MATLAB下直接輸入:A:

6、%顯示異質陣列 A 的全部構成元素,Result,ans=this is the first cell.ans=123456789ans=5.0000+6.0000i 4.0000+5.0000ans=TimChris,異質陣列的內容取用,直接取用異質陣列的cell取用異值陣列的元素的內部構成單位一次同時取用或刪除多個元素異質陣列可以取代以逗點分開的變數列,直接取用異質陣列的cell(1/2),以下例子先建立一個異質陣列 B,再取用其中第 1 橫列、第 2 直行的元素:,B=James Bond,1 2;3 4;5 6;pi,magic(5),B=James Bond 3x2 double 3

7、.1416 5x5 double,Hint:magic(n)可製造nxn大小的魔方陣,直接取用異質陣列的cell(2/2),F=B1,2%取用異質陣列 B 的第 1 橫列、第 2 直行的元素Result:,F=123456,取用異值陣列的元素的內部構成單位,先用 Content Indexing 的方法,再直接加上一般矩陣的索引法Ex:G=B1,2(3,1),G=5,同時取用或刪除多個元素,如上述異質陣列B,H=B(2,:)%取用異質陣列 B 的第一橫列所有元素H=3.1416 5x5 double B(1,:)=%刪除異質陣列 B 的第一橫列所有元素B=3.1416 5x5 double,取

8、代以逗點分開的變數列,Ex:%先建立一個維度為 14 的異質陣列 F=2 3 5,1 2 3,Timmy,Annie;F1:2 ans=2 3 5ans=1 2 3,取代以逗點分開的變數列,上例中,F1:2 會指向 2 3 5,1 2 3可將之用於函數的輸入變數列,例如:plot(F1:2,-o)Result:,取代以逗點分開的變數列(cont),同理,亦可將之用於輸出變數列:Ex:F1:2=max(rand(5),F=1x5 double 1x5 double%F為一1x2的異質陣列,其他相關指令,改變異質陣列的大小事先預設(Pre-Allocate)空的異質陣列測試某一變數是否為異質陣列將

9、一數值陣列轉換成異質陣列將一結構陣列的所有欄位值轉換成異質陣列將異值陣列轉換為結構陣列將一結構陣列的某一欄位值轉換成異質陣列,改變異質陣列的大小,可使用:運算或reshapeEx:B為2x2異質陣列B=James Bond3x2 double 3.14165x5 doubleResult:,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,預設空的異質陣列,利用 cell 指令Ex:E=cell(4,3)%事先預設一個 43 空的異質

10、陣列Result:,E=,測試某變數是否為異質陣列,可用iscell 指令Ex:iscell01.m,C=1,2,3;This is a test.;iscell(C),ans=1,Hint:上例中,iscell 的執行結果是傳回值 1,代表變數 A 是一個異質陣列,若傳回值 0,則代表不是異質陣列。,數值陣列轉換成異質陣列(1/5),num2cell 指令可將一數值陣列轉換成異質陣列,其使用語法為:C=num2cell(A,dim)其中 dim 是代表 不變的維度,若不指定,則將每個元素視為異質陣列裡面的一個 11 矩陣,將數值陣列轉換成異質陣列(2/5),Ex:num2cell01.m,A

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

12、建立的一個數值陣列 AE=num2cell(A,2)%2 代表直行被切割,E=1x3 double1x3 double,將數值陣列轉換成異質陣列(5/5),若需要更複雜的轉換,可以使用mat2cell指令Ex:,X=1 2 3 4;5 6 7 8;9 10 11 12C=mat2cell(X,1 2,1 3),X=1 2 3 4 5 6 7 8 9 10 11 12,C=1 1x3 double 2x1 double 2x3 double,將結構陣列轉換成異質陣列,struct2cell 指令可將一結構陣列的所有欄位值轉換成異質陣列。Ex:struct2cell01.m,student.nam

13、e=Tim;student.age=8;%student為一structsCell=struct2cell(student),sCell=Tim 8,將異值陣列轉換為結構陣列,另外有一個 cell2struct 指令可以將異值陣列轉換為結構陣列詳細說明請參考本書的下一章結構陣列。,將結構陣列的某一欄位值轉換成異質陣列,使用 deal 指令Ex:deal01.m,S=struct(name,Tim,Annie,age,8,5);sCell1:length(S)=deal(S.name),sCell=Tim Annie,deal 指令,deal 指令的輸入及輸出引數需有相同個數如上例中,sCell

14、1:length(S)的作用即是產生以逗點分開的輸出變數列。善用 deal 指令,可達成事半功倍之效,以下欲列出 MATLAB 根目錄下所有目錄(不含檔案),Ex:deal02.m,dirInfo=dir(matlabroot);%列出 MATLAB 的根目錄的各種資訊n=length(dirInfo);%檔案及目錄的個數fileAndDir1:n=deal(dirInfo.name);%fileAndDir 包含檔案及目錄名稱dirs=fileAndDir(dirInfo.isdir)%dirs 包含各目錄名稱,Result,dirs=Columns 1 through 10.bindemosexternhelpjajavanotebookrtwColumns 11 through 17simulinkstateflowsystoolboxuninstallwebserverwork,本章指令彙整,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号