標籤:matlab 元胞數組 元胞 cell
與架構數組類似,元胞數組也可以存放不同類型不同大小的資料,每個元素稱為一個元胞(cell)。
(1)元胞數組的建立
三種方法:直接賦值法,利用函數cell()和利用{}直接建立元胞數組的所有單元。
執行個體:
%1、直接賦值法%通過指派陳述式將值賦到單元數組的一個單元中,每次只能建立一個單元內容;%有兩種賦值方法:內容索引法和單元索引法%(1)內容索引法:指派陳述式左邊用大括弧將單元的下表括起來,右邊為單元內容%執行個體:建立一個2*2的元胞數組c{1,1}='this is a cell array';%字串c{1,2}=[1,2,3,4,5;6,7,8,9,0];%矩陣c{2,1}=[];c{2,2}=4+3*i;%複數class(c) %判斷的資料類型%運行結果:% ans =% cell% % c% c = % % 'this is a cell array' [2x5 double]% [] [4.0000 + 3.0000i]%(2)單元索引法:指派陳述式左邊用()將單元的下表括起來,右邊為單元內容,用{}%執行個體:建立一個2*2的元胞數組c(1,1)={'this is a cell array'};%字串c(1,2)={[1,2,3,4,5;6,7,8,9,0]};%矩陣c(2,1)={[]};c(2,2)={4+3*i};%複數%運行結果相同%2、cell()函數建立法%cell()函數可以建立元胞數組,而且還可以指定大小%文法:cell_array=cell(m,n) 建立m*n的元胞數組,定義之後可以用賦值法對其進行賦值%3、用{}直接建立元胞數組%在大括弧中依次列出所需建立元胞數組的內容,之間用逗號隔開,行與行之間用分號隔開%執行個體:建立一個2*3的元胞數組cell={['this','is','s','cellarray'] , [1,2] , [] ; 2+3*i , 4 , eye(4)}class(cell)%運行結果:% cell = % 'thisisscellarray' [1x2 double] []% [2.0000 + 3.0000i] [ 4] [4x4 double]% % ans =% cell(2)元胞數組的訪問
%元胞數組的訪問%方式有兩種:%(1)用()將下標括起來訪問其單元的結構類型%(2)用{}將下標括起來訪問其單元的具體內容%在cell元胞數組的基礎上編寫執行個體:cella=cell(1,1)A=cell{1,1}b=cell(1,2)B=cell{1,2}%運行結果% cell = % 'thisisscellarray' [1x2 double] []% [2.0000 + 3.0000i] [ 4] [4x4 double]% a = % 'thisisscellarray'% A =% thisisscellarray% b = % [1x2 double]% B =% 1 2%利用celldisp()函數對元胞數組的所有單元內容進行訪問celldisp(cell)%結果:% cell{1,1} =% thisisscellarray% cell{2,1} =% % 2.0000 + 3.0000i% cell{1,2} =% 1 2% cell{2,2} =% 4% cell{1,3} =% [] % cell{2,3} =% 1 0 0 0% 0 1 0 0% 0 0 1 0% 0 0 0 1(3)元胞數組的基本操作
包含元胞數組的訪問、元胞數組的擴充、縮小、嵌套等操作
%1、元胞數組的擴充%利用賦值法進行擴充執行個體cellcell{3,2}=['這是擴充內容'] %自動擴充為3*3陣列,未賦值的部分為[]% %運行結果:% cell = % 'thisisscellarray' [1x2 double] []% [2.0000 + 3.0000i] [ 4] [4x4 double]% cell = % 'thisisscellarray' [1x2 double] []% [2.0000 + 3.0000i] [ 4] [4x4 double]% [] '這是擴充內容' []%2、元胞數組的縮小%通過對要刪除的單元賦空值的方式來刪除數組的行或者列%文法:%(1)刪除行:cellname(行號,:)=[]%(1)刪除列:cellname(:,列號)=[]%執行個體cell(2,:)=[] %刪除第二行cell(:,1)=[] %再刪除第一列%結果:% cell = % 'thisisscellarray' [1x2 double] []% [] '這是擴充內容' []% cell = % [1x2 double] []% '這是擴充內容' []%3、元胞數組的嵌套%元胞數組的元胞中包含其他的元胞數,稱為嵌套元胞數組,沒有嵌套結構的元胞則稱為頁元胞。%使用嵌套的大括弧或cell函數,或直接用賦值運算式,都可以建立嵌套單元數組,%另外還可以訪問嵌套元胞數組的子數組、元胞或元胞的元素。%執行個體a=cell(2,2);a{1,1}=12;a{1,2}{1,1}=[1,2];%元胞數組嵌套a{2,1}='元胞數組嵌套';a{2,2}=[1,2,3;4,5,6]cellplot(a) %畫出單元陣列的結構圖%結果:% a = % [ 12] {1x1 cell }% '元胞數組嵌套' [2x3 double]
(4)元胞數組的操作函數
celldisp()顯示單元陣列的內容
cellplot()畫出單元陣列的結構圖
%reshape()改變元胞數組的形狀reshape(a,1,4) %在上面例子的基礎上將元胞數組a由2*2改為1*4%結果:% ans = % [12] '元胞數組嵌套' {1x1 cell} [2x3 double]%cell2struct()將元胞數組轉化為架構數組%num2cell()將數字矩陣轉化為元胞數組num=[1,2,3;4,5,6];cell_num=num2cell(num) %數字矩陣轉化為元胞數組class(cell_num)%判斷類型iscell(cell_num)%判斷是否是元胞數組%運行結果:% cell_num = % % [1] [2] [3]% [4] [5] [6]% ans =% cell% ans = 1%cellstr()將二維字元數組轉化成字串單元陣列S = ['abc '; 'defg'; 'hi '];c = cellstr(S)%結果% c = % 'abc'% 'defg'% 'hi'% % class(c)% ans =% cell%char()將字串單元陣列轉化為相應的字元數組
Matlab基礎學習----------------元胞數組