本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

cell

元胞数组

说明

元胞数组是一种包含名为元胞的索引数据容器的数据类型,其中的每个元胞都可以包含任意类型的数据。元胞数组通常包含文本列表、文本和数字的组合或者不同大小的数值数组。通过将索引括在圆括号 () 中可以引用元胞集。使用花括号 {} 进行索引来访问元胞的内容。

创建对象

当要将数据放入一个元胞数组中时,请使用元胞数组构造运算符 {} 创建该数组。

C = {1,2,3;
     'text',rand(5,10,2),{11; 22; 33}}
C=2×3 cell
    {[   1]}    {[          2]}    {[     3]}
    {'text'}    {5x10x2 double}    {3x1 cell}

您也可以使用 {} 创建一个空的 0×0 元胞数组。

C = {}
C =

  0x0 empty cell array

要创建具有指定大小的元胞数组,请使用下面介绍的 cell 函数。

您可以使用 cell 预分配一个元胞数组,稍后再为其分配数据。cell 还可以将某些类型的 Java®、.NET 和 Python® 数据结构体转换为由等效的 MATLAB® 对象组成的元胞数组。

说明

示例

C = cell(n) 返回由空矩阵构成的 n×n 元胞数组。

示例

C = cell(sz1,...,szN) 返回由空矩阵构成的 sz1×...×szN 元胞数组,其中,sz1,...,szN 表示每个维度的大小。例如,cell(2,3) 返回一个 2×3 元胞数组。

示例

C = cell(sz) 返回由空矩阵构成的元胞数组,并由大小向量 sz 来定义数组大小 size(C)。例如,cell([2 3]) 会返回一个 2×3 元胞数组。

D = cell(obj) 可将 Java 数组、.NET System.StringSystem.Object 数组或者 Python 序列转换为 MATLAB 元胞数组。

输入参数

全部展开

方形元胞数组的大小,指定为整数值。

  • 如果 n0,则 C 为一个空的元胞数组。

  • 如果 n 为负数,则将其视为 0

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

元胞数组的维度大小,指定为整数值。

  • 如果任何维度的大小为 0,则 C 为空的元胞数组。

  • 如果任何维度的大小为负值,则其将被视为 0

  • 对于第二个维度以上的维度,cell 忽略大小为 1 的尾部维度。例如,cell(3,1,1,1) 生成由空矩阵组成的 3×1 元胞数组。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

大小,指定为由整数组成的行向量。sz 的每个元素指示对应维度的大小。

  • 如果任何维度的大小为 0,则 C 为空的元胞数组。

  • 如果任何维度的大小为负值,则其将被视为 0

  • 对于第二个维度以上的维度,cell 忽略大小为 1 的尾部维度。例如,cell([3 1 1 1]) 生成由空矩阵组成的 3×1 元胞数组。

示例: sz = [2 3 4] 创建一个由空矩阵构成的 2×3×4 元胞数组。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输入数组,指定为:

  • Java 数组或对象

  • System.StringSystem.Object 类型的 .NET 数组

  • Python 序列类型

输出参数

全部展开

输出数组,以元胞数组的形式返回。每个元胞包含一个类型为 double 的 0×0 空数组。

已转换的数组,以元胞数组的形式返回。

每个元胞包含一个类型与对应的 Java、.NET 或 Python 类型最接近的 MATLAB 对象。有关详细信息,请参阅:

示例

全部折叠

当相关的数据段具有不同的数据类型时,可将它们放在一个元胞数组中。每个元胞包含一段数据。要引用元胞数组的元素,请使用数组索引。您可以使用圆括号 () 对元胞数组进行索引,使用花括号 {} 对元胞的内容进行索引。

创建一个元胞数组,其中包含在给定日期测得的几个温度读数。将日期指定为字符向量,将温度指定为双精度数组。要将这些数据段存储在元胞数组中,请将它们放在花括号中。

C = {'2017-08-16',[56 67 78]}
C=1×2 cell
    {'2017-08-16'}    {1x3 double}

将不同日期的读数添加到元胞数组中。要添加更多元胞,您可以通过赋值来扩展元胞数组,就像扩展普通数组一样。

C(2,:) = {'2017-08-17',[58 69 79]};
C(3,:) = {'2017-08-18',[60 68 81]}
C=3×2 cell
    {'2017-08-16'}    {1x3 double}
    {'2017-08-17'}    {1x3 double}
    {'2017-08-18'}    {1x3 double}

C 的第一行进行索引。当您使用圆括号 () 进行索引时,将得到一个作为该元胞数组子集的元胞数组。

C(1,:)
ans=1×2 cell
    {'2017-08-16'}    {1x3 double}

对元胞的内容进行索引。当您使用花括号 {} 进行索引时,将得到指定元胞中包含的数据段。

C{1,2}
ans = 1×3

    56    67    78

创建一个由空矩阵构成的 3×3 元胞数组。

C = cell(3)
C=3×3 cell
    {0x0 double}    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}    {0x0 double}

创建一个由空矩阵构成的 3×4×2 元胞数组。

C = cell(3,4,2);
size(C)
ans = 1×3

     3     4     2

创建由大小与现有数组相同的空矩阵组成的元胞数组。

A = [7 9; 2 1; 8 3];
sz = size(A);
C = cell(sz)
C=3×2 cell
    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}
    {0x0 double}    {0x0 double}

通常可以将前两行代码合并成一行:

C = cell(size(A));

提示

  • 使用 cell 函数创建一个由空矩阵组成的元胞数组,等同于将一个空矩阵赋给新建元胞数组的最后一个索引。例如,以下两个语句是等效的:

    C = cell(3,4,2);
    C{3,4,2} = [];

兼容性考虑

全部展开

R2019a 中的行为有变化

扩展功能

在 R2006a 之前推出