zoukankan      html  css  js  c++  java
  • cell函数总结

    元胞数组:

        元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。

    关于cell的创建:

    1.跟一般创建举证一样,直接使用C = {A B D E}这种形式,不过这里把"[]"改成了}"{}"

    2.使用cell创建cell,C= {C1 C2},这里C1和C2都是cell类型,直接把C1 C2作为一个cell得到的C3是一个1x2的cell数组;使用C3 = [C1 C2],是使用C1和C2的内容来创建cell数组

    3.使用cell函数,A=cell(2,2),创建一个空的2x2的cell矩阵.

    cell函数创建元胞数组,创建的数组为空元胞。cell函数创建空元胞数组的主要目的是为数组预先分配连续的存储空间,节约内存占用,提高执行效率。  

    关于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)即可

    元胞数组的数据获得:

       
    从元胞数组中读取数据,可保存为一个标准的数组或一个新的单元数组,或取出数组进行计算。元胞数组中数据的访问,可通过元胞内容的下标进行,用元胞数组名加大括号{}。大括号中数值表示元胞的下标。如a{12}表示元胞数组中第一行第二列的元胞。

    >> a={20,'matlab';ones(2,3),1:3}
    a =
        [ 20]    'matlab'  

        [2x3 double]    [1x3 double]



    >> str=a(1,2)
    str =
        'matlab'


    >> class(str)
    ans =
    cell


    >> str=a{1,2}
    str =
    matlab


    >> class(str)
    ans =
    char

    ()和{}有着本质的区别,大括号用于表示元胞的内容,小括号表示指定的元胞。

    a =
        [   20]    'matlab'  

        [2x3 double]    [1x3 double]


    >> a{2,1}(2,2)
    ans =
        0.9134

    >> a{2,1}(2,3)
    ans =
        0.0975


    >> a{1,2}(2)
    ans =

    a
    使用元胞的下标,可将一个元胞数组的子集赋值给另一个变量,创建新的元胞数组。



    >> a=[{1},{2},{3};{4},{5},{6};{7},{8},{9}]
    a =
        [1]    [2]    [3]

        [4]    [5]    [6]

        [7]    [8]    [9]



    >> b=a(2:3,2:3)
    b =
        [5]    [6]

        [8]    [9]



    >> c=a(1:3,2:3)
    c =
        [2]    [3]

        [5]    [6]

        [8]    [9]

         
    本例使用元胞下标的方式创建了新的元胞数组bc,通过结果看出bc就是元胞数组a的一部分。

    关于cell的删除和重塑:

    1.cell(1)=[]删除第一个cell,不能使用cell{1}=[],这是把第一个cell内容置空没有删除

    >>C4={C1,C2,C3}

    C4 =

        {3x2 cell}    {3x3 cell}    {3x1 cell}

    >> C4(1)=[]

    C4 =

        {3x3 cell}    {3x1 cell} 

    2.cell(:)=[]删除所有的cell,其他的删除一次类推
    >> C4(:)=[]

    C4 =

         {}

    3.使用reshape重新reshape cell arrays

    >> A={1,2,3}

    A =

        [1]    [2]    [3]

    >> B = reshape(A, 1, 3);
    >> B = reshape(A, 3, 1);
    >> B = reshape(A, 2, 6);
    ??? Error using ==> reshape
    To RESHAPE the number of elements must not change.
    使用reshape需要保证前后调整后的元素个数一致,否则会报错

    元胞数组中的操作函数
          cell:创建空的元胞数组

          cellfun:为元胞数组的每个元胞执行指定的函数

          celldisp:显示所有元胞的内容

          cellplot:利用图形方式显示元胞数组

          cell2mat:将元胞数组转变成为普通的矩阵

          mat2cell:将数值矩阵转变成为元胞数组

          num2cell:将数值数组转变成为元胞数组

          deal:将输入参数赋值给输出

          cell2struct:将元胞数组转变成为结构

          struct2cell:将结构转变为元胞数组

          iscell:判断输入是否为元胞数组

        

    >> a={20,'matlab',3-7i;ones(2,3),1:3,0}

    a =

        [        20]    'matlab'        [3.0000 - 7.0000i]
        [2x3 double]    [1x3 double]    [               0]

    >> b=cellfun('isreal',a)

    b =

         1     1     0
         1     1     1

    >> c=cellfun('length',a)

    c =

         1     6     1
         3     3     1

    >> d=cellfun('isclass',a,'double')

    d =

         1     0     1
         1     1     1

    (函数的应用)

        cellfun函数的主要功能是对元胞数组的元素(元胞)分别指定不同的函数,不过,能够在cellfun函数中使用的函数ushuliang是有限的。 

        能在cellfun中使用的函数:

        isempty:若元胞元素为空,则返回逻辑真

        islogical:若元胞元素为逻辑类型,则返回逻辑真

        isreal:若元胞元素为实数,则返回逻辑真

        length:元胞元素的长度

        ndims:元胞元素的维数

        prodofsize:元胞元素包含的元素个数 

    元胞数组的嵌套

        元胞数组的元胞中包含其他的元胞数,称为嵌套元胞数组,没有嵌套结构的元胞则称为页元胞。使用嵌套的大括号或cell函数,或直接用赋值表达式,都可以创建嵌套单元数组,另外还可以访问嵌套元胞数组的子数组、元胞或元胞的元素。

      

    >> a=cell(1,2)

    a =

         []     []

    >> a(1,2)={cell(2,2)}

    a =

         []    {2x2 cell}

        

          >> a(1,1)={magic(3)};
    a{1,2}(1,1)={[1 2 3;4 5 6;7 8 9]};
    a{1,2}(2,1)={[2-i;4+7i]};
    a{1,2}(2,2)={cell(1,2)};
    a{1,2}{2,2}(2)={5};
    >> cellplot(a)

  • 相关阅读:
    【洛谷P2660烤鸡】
    cogs448
    排队打水
    洛谷U36590搬书
    NOIP2012借教室
    归并排序模版
    NOIP2015神奇的幻方
    NOIP2006能量项链
    NOIP2003加分二叉树
    NOI1995石子合并&多种石子合并
  • 原文地址:https://www.cnblogs.com/lihuidashen/p/3431078.html
Copyright © 2011-2022 走看看