Matlab基礎學習----------------元胞數組

來源:互聯網
上載者:User

標籤: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基礎學習----------------元胞數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.