MATLAB 的 cell 大法(單元格數組)


 

MATLAB 的 cell,稱單元格數組 or 元胞數組:使用頻率特別高,甚至比 struct 結構體還高。

MATLAB文檔給出的 cell 官方定義:

  A cell array is a collection of containers called cells in which you can store different types of data.

  精華之處就是在可以存儲不同類型的數據.可以是Matlab的類型或者自定義的類型.

  一個元胞數組的一個單元可能包含:一個實數數組 or 字符型數組 or 復數數組 or 元胞數組(嵌套啦)

 

1  元胞數組的創建

  創建方法有 3 種:直接賦值法、利用函數cell()、利用{ }直接創建元胞數組的所有單元。

  1.1 直接賦值法

    通過賦值語句把值賦到單元數組的一個單元中,但每一次賦值只能創建一個單元內容。

    兩種賦值方法:內容索引法(content indexing)和單元索引法(cell indexing)。

    (1)內容索引法:賦值語句的左邊用大括號 { } 將標識單元的下標括起來,右邊為單元的內容。

        

    (2)單元索引法:賦值語句的左邊用小括號 () 將標識單元的下標括起來,右邊用大括號將存儲於單元中的數據括起來。

             

  1.2 利用函數cell() ——較為常用

     利用函數cell() 可以創建一個元胞數組,還可以規定其大小。

    

  1.3 利用{ }直接創建元胞數組(的所有單元)

    這是一種快捷的元胞數組創建方法,利用 { } 可以直接快速地創建所需元胞數組。在大括號中一次列出所需創建元胞數組的內容,它們之間用逗號(,)隔開,行與行之間用分號(;)隔開,這樣就可以創建一個已經初始化好的元胞數組。

    利用 { } 創建元胞數組的格式為: 
     cellname={[cell 1,1],[cell 1,2],......,[cell 1,n] ; ...... ; [cell m,1],[cell m,2],......,[cell m,n]};  %此即為創建了一個 m×n 的元胞數組,並將單元進行了初始化。
    

 

2  元胞數組的尋訪

在編程時,一個元胞數組的每一個單元都是一個指針,指向其他的數據結構,而這些數據結構可以是不同的數據類型。 在MATLAB中,元胞數組創建時,沒有顯示內容單元的內容,顯示的只是它相應的數據類型。而MATLAB可以通過單元的名稱來尋訪其單元包含的內容。

在MATLAB中,元胞數組的尋訪有以下兩種形式。

(1)用( )將下標括起來尋訪其單元的結構類型。

(2)用{ }將下標括起來尋訪其單元的內容。

   

 (3)此外,可以用celldisp(  )函數對元胞數組的所有內容進行尋訪。

  

 PS:

關於cell的訪問:

1.X= C(s)使用這種"()"形式的返回的是cell類

2.X = C{s}使用這種"{}"形式的返回的是cell中的內容

3.其他的基本上與通常的數組.矩陣訪問一樣了

4.A{1,1}(2,3:end)訪問的是A中的第一個cell里面內容的第2行的第三個元素以后的所有元素

5.A{1,3}.name訪問的是A中的A{1,3}cell里面結構的name值

6.cell的圖形化顯示使用命令cellplot(A)即可如B={[1;2]},這就定義了一個cell型的變量B,里面保存的是一個矩陣[1;2],要引用里面的數據只要在大括號里寫上對應的下標即可,如B{1}。

 下面我們給B再加個元素,我們可以這樣定義B(2)={'hello'}。也可以利用引用的方法定義B{2}='hello'。第二種方法比第一種方法更方便所以更常用。

  這樣B就有兩個元素了,B(1)是{[1;2]},B(2)是{'hello'},每個元素都是cell型的(注意和B{1}、B{2}的區別,B{1}是[1;2],B{2}是'hello')。

 

 

 

 

 

 

 

【Reference】

1、http://blog.sina.com.cn/s/blog_8259d70901017wit.html

2、https://blog.csdn.net/northhan/article/details/52685664


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM