精华内容
下载资源
问答
  • MATLAB元胞数组详细介绍
    2020-12-22 10:31:50

    MATLAB

    元胞数组

    [

    ]

    元胞数组:

    元胞数组是

    MATLAB

    的一种特殊数据类型,可以将元胞数组看做一

    种无所不包的通用矩阵,或者叫做

    广义矩阵

    。组成元胞数组的元素可

    以是任何一种数据类型的常数或者常量

    每一个元素也可以具有不同

    的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元

    胞数组的元素叫做元胞(

    cell

    )。和一般的数值矩阵一样,元胞数组

    的内存空间也是动态分配的。

    (

    1

    )元胞数组的创建

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

    a =

    'matlab' [ 20]

    [2x3 double] [1x10 double]

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

    b =

    'matlab' [ 20]

    [2x3 double] [1x10 double]

    >> c={10}

    c =

    [10]

    >> c(1,2)={2}

    c =

    [10] [2]

    >> c(2,2)={5}

    c =

    [10] [2]

    [] [5]

    >> isequal(a,b)

    ans =

    1

    >> whos

    Name Size Bytes Class Attributes

    a 2x2 388 cell

    ans 1x1 1 logical

    b 2x2 388 cell

    c 2x2 208 cell

    更多相关内容
  • 组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的...

    元胞数组:

    元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的

    常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值

    矩阵一样,元胞数组的内存空间也是动态分配的。

    (1)元胞数组的创建

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

    a =

    'matlab'        [         20]

    [2x3 double]    [1x10 double]

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

    b =

    'matlab'        [         20]

    [2x3 double]    [1x10 double]

    >> c={10}

    c =

    [10]

    >> c(1,2)={2}

    c =

    [10]    [2]

    >> c(2,2)={5}

    c =

    [10]    [2]

    []    [5]

    >> isequal(a,b)

    ans =

    1

    >> whos

    Name      Size            Bytes Class      Attributes

    a         2x2               388 cell

    ans       1x1                 1 logical

    b         2x2               388 cell

    c         2x2               208 cell

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

    >> a=cell(1)

    a =

    {[]}

    >> b=cell(1,2)

    b =

    []     []

    >> c=cell(3,3)

    c =

    []     []     []

    []     []     []

    []     []     []

    >> d=cell(2,2,2)

    d(:,:,1) =

    []     []

    []     []

    d(:,:,2) =

    []     []

    []     []

    >> whos

    Name      Size             Bytes Class      Attributes

    a         1x1                  4 cell

    ans       1x1                  1 logical

    b         1x2                  8 cell

    c         3x3                 36 cell

    d         2x2x2               32 cell

    (2)元胞数组的数据获得

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

    >> 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]

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

    (3)元胞数组的删除和重塑

    要删除单元数组中的行或列,可以用冒号表示单元数组中的行或列,然后对其赋一个空矩阵即可。

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

    a =

    [        20]    'matlab'

    [2x3 double]    [1x3 double]

    >> a(1,:)=[]

    a =

    [2x3 double]    [1x3 double]

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

    >> a{1}=[]

    a =

    []    'matlab'

    [2x3 double]    [1x3 double]

    >> a(1)=[]

    a =

    [2x3 double]    'matlab'    [1x3 double]

    >> a(2)=[]

    a =

    [2x3 double]    [1x3 double]

    >> a(1,2)=[]

    ??? A null assignment can have only one non-colon index.

    >> a(1)=[]

    a =

    [1x3 double]

    元宝数组和其他数组一样,也可以通过reshape函数改变形状,改变后的元胞数组与原元胞数组的元素个数相同,不能通过改变形状来添加或删除元胞数组中的元素。

    >> a=cell(4,4)

    a =

    []     []     []     []

    []     []     []     []

    []     []     []     []

    []     []     []     []

    >> size(a)

    ans =

    4     4

    >> b=reshape(a,2,8)

    b =

    []     []     []     []     []     []     []     []

    []     []     []     []     []     []     []     []

    >> size(b)

    ans =

    2     8

    (5)元胞数组中的操作函数

    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:元胞元素包含的元素个数

    (7)元胞数组的嵌套

    元胞数组的元胞中包含其他的元胞数,称为嵌套元胞数组,没有嵌套结构的元胞则称为页元胞。使用嵌套的大括号或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)

    (8)元胞数组与数值数组间的转化

    应用循环,可以将元胞数组转化为数值数组。

    展开全文
  • MATLAB元胞数组Cell类型求和函数,每个元胞size需相同,输出为元胞的size大小的矩阵
  • matlab 元胞数组

    2021-09-26 09:43:16
    MATLAB元胞数组是一个多维数组 牢记: 1.检索某个元胞的内容请在花括号中使用下标,例如A{1}。 2.元胞数组中的每一个元素都是其他数组的一个副本,这一特性可以使得在改变原数组的情况下,元胞数组中的数组并不会...

    元胞数组

    元胞数组可以存储不同大小的矩阵序列

    MATLAB 的元胞数组是一个多维数组

    牢记:

    1.检索某个元胞的内容请在花括号中使用下标,例如A{1}。
    2.元胞数组中的每一个元素都是其他数组的一个副本,这一特性可以使得在改变原数组的情况下,元胞数组中的数组并不会改变。

    使用cell()函数就可以创建空矩阵的元胞数组

    eg: cell(1, 3)创建了一个一行三列内容为空的元胞数组矩阵 cell(3)创建了一个3*3的元胞数组矩阵
    在这里插入图片描述

    创建一个元胞数组最普遍的做法是用一个花括号把已经存在的数组括住
    在这里插入图片描述

    用循环对元胞数组进行赋值

    在这里插入图片描述

    展开全文
  • 在使用 Matlab 的过程中经常遇到元胞数组(Cell Arrays),以前对元胞数组的用法和寻址方式模模糊糊,今天就把元胞数组彻底剖析清楚。1.元胞数组(Cell)的创建...元胞数组是 MATLAB 中的一种特殊数组,数组的元素叫做...

    在使用 Matlab 的过程中经常遇到元胞数组(Cell Arrays),以前对元胞数组的用法和寻址方式模模糊糊,今天就把元胞数组彻底剖析清楚。

    1.元胞数组(Cell)的创建方式

    可以通过以下两种方式创建Cell元胞数组:使用赋值语句

    使用 cell 函数预分配数组,然后将数据分配给单元

    在此之前,有必要了解一下元胞数组的结构以及存储数据的方式。

    元胞数组是 MATLAB 中的一种特殊数组,数组的元素叫做 cell,cell 可以作为容纳其他 MATLAB 数组的容器。可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。例如,一个元胞数组中的一个 cell 单元可能包含一个实矩阵,另一个 cell 单元可能包含文本字符串数组,再一个 cell 单元可能包含复数向量。也就是说它的每个单元可以储存不同的数据类型,可以是数值,字符或矩阵或元胞数组等。

    下图所示的是一个 2×3 的元胞数组的结构,每一个格子都是一个 cell 单元,单元里面存储的数据类型不尽相同。

    23be217a291dc8cfd8ee2980c88c6770.png

    元胞数组第1行的3个单元包括了整数数组、字符串数组和一个复数数组,第2行的3个单元包括了行向量 、整数数组 以及另外一个元胞数组的嵌套。

    和数值数组一样,元胞数组的维数不受限制,元胞数组可以是一维的、二维的,也可以是多维的。对元胞数组的元素进行寻访,可以使用“单下标”方式或者“全下标”的方式。在表现形式上,元胞数组和一般矩阵一样,元胞数组的尺寸也必须是长方形的。一般矩阵的创建使用中括号 "[ ]" ,而元胞数组使用的是花括号 "{ }" 。元胞数组的创建方式同矩阵的创建方式类似,只需要将中括号 "[ ]" 替换为花括号 "{ }" 即可。在元胞数组创建的过程中使用逗号或者空格来分隔元素,使用分号来分行。

    (1)使用赋值语句创建

    您可以通过将数据分配给单个单元(一次一个单元)来构建元胞数组。构建完成后 MATLAB 会自动创建元胞数组。有两种将数据分配给单元的方法:

    a.单元索引赋值

    例如,创建一个2×2的元胞数组 A,使用单元索引时,数组的下标需要用圆括号 "( )" ,等式右边单元里存放的内容元素需用大括号 "{ }" 括起来。A(1,1) = {[1 4 3; 0 5 8; 7 2 9]};

    A(1,2) = {'Anne Smith'};

    A(2,1) = {3+7i};

    A(2,2) = {-pi:pi/10:pi};

    b.内容索引赋值

    创建一个与上面相同的元胞数组 A ,由于是直接进行内容索引,数组的下标需要用 "{ }" 括起来,索引等式的右边直接写要存放的内容元素即可。A{1,1} = [1 4 3; 0 5 8; 7 2 9];

    A{1,2} = 'Anne Smith';

    A{2,1} = 3+7i;

    A{2,2} = -pi:pi/10:pi;

    在Matlab中元胞数组 A 显示为:A =

    2×2 cell 数组

    {3×3 double } {'Anne Smith'}

    {[3.0000 + 7.0000i]} {1×21 double }

    其次,celldisp() 函数可以显示完整的元胞数组:>> celldisp(A)

    A{1,1} =

    1 4 3

    0 5 8

    7 2 9

    A{2,1} =

    3.0000 + 7.0000i

    A{1,2} =

    Anne Smith

    A{2,2} =

    1 至 7 列

    -3.1416 -2.8274 -2.5133 -2.1991 -1.8850 -1.5708 -1.2566

    8 至 14 列

    -0.9425 -0.6283 -0.3142 0 0.3142 0.6283 0.9425

    15 至 21 列

    1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416

    如果将数据分配给当前数组维度之外的单元 ,MATLAB 会自动扩展数组以包括指定的下标。并且 Matlab 会自动用空矩阵填充所有空缺的单元。例如,以下赋值将2×2的元胞数组 A 变成3×3的元胞数组。A(3,3)= {5};>> A(3,3)= {5}

    A =

    3×3 cell 数组

    {3×3 double } {'Anne Smith'} {0×0 double}

    {[3.0000 + 7.0000i]} {1×21 double } {0×0 double}

    {0×0 double } {0×0 double } {[ 5]}

    此时,元胞数组的结构如下:

    3898a2f568e01be2bc73320e16b3c4ab.png

    (2)使用 Cell 函数预分配数组创建

    cell 函数允许用户预分配指定大小的空元胞数组。例如,下面的语句创建了一个空的2×3元胞数组。B = cell(2,3);

    再使用赋值语句进行内容的填充:B(1,3) = {1:3};

    结果如下:>> B = cell(2,3);

    >> B(1,3) = {1:3};

    >> B

    B =

    2×3 cell 数组

    {0×0 double} {0×0 double} {1×3 double}

    {0×0 double} {0×0 double} {0×0 double}

    2.元胞数组(Cell)的访问方式

    元胞数组的访问主要有以下2种方式:使用内容索引访问单元内容,下标用 { }

    使用单元索引访问单元结构类型,下标用 ( )

    X= C(a,b) 使用这种 "( )" 形式的返回的是cell类

    X = C{a,b} 使用这种 "{ }" 形式的返回的是cell中的内容

    (1)内容索引访问

    考虑下面这个2×2的元胞数组:N{1,1} = [1 2; 4 5];

    N{1,2} = 'Name';

    N{2,1} = 2-4i;

    N{2,2} = 7;

    你可以通过 N{1,2} 来获取里面存储的字符串内容:>> N{1,2}

    ans =

    'Name'

    要获取单元内容的子集,可以连接索引表达式。例如,要获取 N{1,1}单元内容中的(2,2)元素,可以使用:d = N{1,1}(2,2)>> d = N{1,1}(2,2)

    d =

    5

    (2)单元索引访问

    还是上面元胞数组 N ,如果输入的是 N(2,1),则返回的是单元的类型:>> N(2,1)

    ans =

    1×1 cell 数组

    {[2.0000 - 4.0000i]}

    使用单元索引可以将任何一组单元分配给另一个变量,从而创建一个新的元胞数组。使用冒号运算符访问元胞数组中的单元子集。例如,将元胞数组 A 中的第2行第3行,第2列第3列的单元赋给 B ,形成一个新的元胞数组。

    9e39c3e1a2b7e0428f013da2be394e40.png

    展开全文
  • MATLAB元胞数组(cell)知识(本资料来源于网络,所有权归原作者所有,如有侵权尽快删除)元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看作一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是...
  • 1,元胞数组 元胞数组使用{ }可以将不同类型数据组合起来,若使用矩阵[ ]组合不同类型数据时会产生非期望结果; 创建一个空元胞数组,cell(3,4) 结果为创建一个...元胞数组中元素重新赋值,a = {1,"a",'b'},a{3} = '
  • 此函数可用于从字符串元胞数组中消除重复的字符串元胞
  • 所以我尝试了一小段代码将一个元胞数组写入excel文件。 该代码搜索具有最大元素数(例如 N)的单元格,并将一个(单元格中的 N 元素数,1)附加到每个单元格。 我用过的,它可以是别的东西。 写好工作表后,我按 ...
  • MATLAB元胞数组

    2020-12-22 10:31:49
    MATLAB元胞数组元胞数组:元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同...
  • matlab元胞数组

    2019-10-15 23:56:05
    元胞数组 矩阵只适合存放和处理若干相同类型的数据,要想同时存放和处理多种类型的数据就需要用元胞数组。...%同行元素间用“, 或空格”隔开 %行与行间用“;”隔开 %第1行第1列的元胞,存放字符...
  • PAGE / NUMPAGES MATLAB元胞数组[转] 元胞数组 元胞数组是MATLAB的一种特殊数据类型可以将元胞数组看做一种无所不包的通用矩阵或者叫做广义矩阵组成元胞数组的元素可以是任何一种数据类型的常数或者常量每一个元素也...
  • 将矩阵 DATA 转换为在 C 的每个单元格条目中具有 CHUNKSIZE 元素的数据块。如果 DATA 的大小不能被 CHUNKSIZE 整除,则 C 中的最后一个条目将包含较少的项目。 例子: chunkify([1 2 3 4], 2) --> {[1 2] [3 4...
  • 用户可以通过两种方式创建一个单元数组:一是通过赋值语句直接创建;...使用cell 函数创建单元数组的步骤为:首先用cell 函数创建一个空的单元数组,然后再为数组元素赋值。使用圆括号和花括号对单元数组索引的不...
  • 元胞在引用时,{}和()到底有什么区别? 代码分析: r={{@objfun,@dee},{@nsgaopt}} r = 1×2 cell 数组 {1×2 cell} {1×1 cell} K>> r(1) ans = 1×1 cell 数组 % 表示{@objfun,@dee}这个元胞 {1×2 ...
  • cell 还可以将某些类型的 Java®、.NET 和 Python® 数据结构体转换为由等效的 MATLAB® 对象组成的元胞数组。 语法 C = cell(n) C = cell(sz1,...,szN) C = cell(sz) D = cell(obj) 结构体数组是使用名为...
  • matlab 元胞数组合并(fail)

    千次阅读 2019-11-07 20:52:24
    matlab 元胞数组合并 在神经网络参数存储中使用元胞数组比较方便 来源:https://ww2.mathworks.cn/help/matlab/matlab_prog/combine-cell-arrays.html?ue 此示例演示了如何通过串联或嵌套来合并元胞数组。为了运行...
  • MATLAB 元胞(cell)全解

    万次阅读 多人点赞 2018-07-24 22:57:01
    使用{}索引,创建各元胞元素 注意此法与法二不同,法二括号索引指向的是普通矩阵元素,因此赋值时需要加大括号{}。而法三大括号的方法,特指元胞的元素内容,所以直接赋值。 2.元胞的显示 还可以使用c...
  • matlab,将元胞数组转字符串

    万次阅读 2019-03-31 09:25:43
    元胞数组转字符串直接用char函数即可 如下 dataTemp = char(db.filename(k)); fileData = fopen('Pdata.txt'); db = readtable('Pdata.txt'); cellArray={}; count = 1; for k = 1:size(db, 1) dataTemp = ...
  • 一、创建元胞数组1、用[]创建元胞,并初始化>> a=[];>> a{1} = {1,2,3,4};a =1×1 cell 数组{1×4 cell}>> a{2} = 3;a =1×2 cell 数组{1×4 cell} {[3]}2、用cell命令创建规格为2*2的空元胞>&...
  • 函数 S = cell2char(C) % % 将字符串元胞数组的内容转换为字符% 大批。 单元格 C 的内容按元素读取,并且% 转换为长度为 MAXCOL 的字符数组,其中 MAXCOL 为% 数组中最长字符串的长度。 % 因此得到的字符数组 S 的...
  • MATLAB 元胞数组使用规则

    千次阅读 2019-08-19 22:52:00
    故而采用元胞数组。cell语句的简单运用说明如下。 1. 元胞数组的建立 例1 创立元胞数组 2. 元胞数组的赋值 例2, 将向量 [1,2,3]放入元胞数组第一cell 例3,将向量 [1,2,3]放入元胞数组第一cell,将向量 ...
  • 12 Matlab 元胞数组

    2021-01-13 10:11:26
    什么是元胞数组前面咱们介绍过矩阵的概念,但是矩阵有一个缺陷,它只能存储同一种类型的数据。...矩阵单纯由数字元素构成,而数组不仅可以是数字元素,也可以是字符元素。在前面,我已经混着用了,所以,...
  • matlab实现cell转str(元胞数组转字符) 描述 函数 方法一 方法二 描述 matlab实现cell转str、double(元胞数组转字符、数值) 函数 方法一 通过大括号{}实现,数组中存储的是什么格式,输出的就是啥...
  • % 在元胞数组中的所有元素中找到最大/最小的元素。 单元阵列可以具有矩阵或单元阵列或这两者的任意组合。 这些函数使用递归。 % 在 zip 文件中有一个 maxC 和一个 minC。 %例子%f=@() randi(100) %只是为了更快地...
  • Matlab元胞数组输出到txt或者dat文件中2018-11-24原链接:http://cn.mathworks.com/help/matlab/import_export/write-to-delimited-data-files.html#br2ypq2-1方法一:用fprint输出元胞数组这个例子展示了怎么用...
  • 此函数查找 2 个数值元胞数组的交集并返回参数。
  • MATLAB 元胞数组

    千次阅读 2017-10-10 12:33:44
    组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组...
  • MATLAB元胞数组

    千次阅读 2018-11-22 18:21:48
    胞元数组的基本组分是胞元(cell),每...一、创建元胞数组 对胞元数组来说,在胞元数组中,胞元和胞元内容是两个不同范畴的东西。因此,寻访胞元和寻访胞元中的内容是两种不同的操作。  “胞元标识(cell Indexing...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,435
精华内容 974
关键字:

matlab元胞元素

matlab 订阅