• 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

  • 相关阅读:
    简单实现java线程池 阿里
    下载安装mysql的一些坑 阿里
    [ZZ]]文艺表年装B指南
    台湾前十大科技公司拼不过三星(往后一点三星都不要买啦!)
    [不是面经,胜似面经]条条大路通Google
    ubuntu 下PDA同步解决(SynCE, OpenSync)
    android整体印象
    关系图:Linux演化图,Ubuntu应用图
    linux 版本中 i386/i686/x8664/pcc 等... 的区别
    一个计算机高手的成长历程【转】
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/9281637.html
Copyright © 2020-2023  润新知