主要内容

cell2table

将元胞数组转换为表

说明

T = cell2table(C)m×n 元胞数组的内容转换为 m×n 表。输入元胞数组的每列都提供包含在输出表变量中的数据。

要在输出表中创建变量名称,cell2table 需要将列号追加到输入数组名称后面。如果输入数组没有名称,cell2table 将创建 "Var1",...,"VarN" 形式的变量名称,其中 N 是元胞数组中的列数。

T = cell2table(C,Name=Value) 可在前面语法中的输入参量外使用一个或多个名称-值参量来指定选项。例如,您可以通过将 VariableNames 设置为变量名称的字符串数组来指定变量名称。

示例

示例

全部折叠

创建一个包含字符串和数值数据的元胞数组。(不推荐使用字符串元胞数组。但在本例中,在既包含字符串又包含数值的元胞数组中包含字符串是合适的。此元胞数组不是文本的容器,而是组合在一起的值的容器,尽管这些值具有不同数据类型。)

C = { 5 "cereal"  110 "C+"; ...
     12 "pizza"   140 "B"; ...
     23 "salmon"  367 "A"; ...
      2 "cookies" 160 "D"}
C=4×4 cell array
    {[ 5]}    {["cereal" ]}    {[110]}    {["C+"]}
    {[12]}    {["pizza"  ]}    {[140]}    {["B" ]}
    {[23]}    {["salmon" ]}    {[367]}    {["A" ]}
    {[ 2]}    {["cookies"]}    {[160]}    {["D" ]}

将元胞数组转换为表并指定变量名称。变量 T.AgeT.Calories 是数值数组,而变量 T.FavoriteFoodT.NutritionGrade 是字符串数组。

T = cell2table(C,VariableNames=["Age" "FavoriteFood" "Calories" "NutritionGrade"])
T=4×4 table
    Age    FavoriteFood    Calories    NutritionGrade
    ___    ____________    ________    ______________

     5      "cereal"         110            "C+"     
    12      "pizza"          140            "B"      
    23      "salmon"         367            "A"      
     2      "cookies"        160            "D"      

将一个元胞数组转换为表。使用该元胞数组的第一行为表提供变量名称。

创建一个元胞数组,其中第一行包含用于标识列标题的字符串。(不推荐使用字符串元胞数组。但在本例中,在包含字符串、数值和逻辑值的元胞数组中包含字符串是合适的。此元胞数组不是文本的容器,而是组合在一起的值的容器,尽管这些值具有不同数据类型。)

Patients = {"LastName" "Age" "Height" "Weight" "Smoker"; ...
            "Chang"     38    71       176     true; ...
            "Brown"     43    69       163     false; ...
            "Ruiz"      38    64       131     false; ...
            "Lee"       38    64       131     false; ...
            "Smith"     40    67       133     false; ...
            "Garcia"    49    64       119     false}
Patients=7×5 cell array
    {["LastName"]}    {["Age"]}    {["Height"]}    {["Weight"]}    {["Smoker"]}
    {["Chang"   ]}    {[   38]}    {[      71]}    {[     176]}    {[       1]}
    {["Brown"   ]}    {[   43]}    {[      69]}    {[     163]}    {[       0]}
    {["Ruiz"    ]}    {[   38]}    {[      64]}    {[     131]}    {[       0]}
    {["Lee"     ]}    {[   38]}    {[      64]}    {[     131]}    {[       0]}
    {["Smith"   ]}    {[   40]}    {[      67]}    {[     133]}    {[       0]}
    {["Garcia"  ]}    {[   49]}    {[      64]}    {[     119]}    {[       0]}

从元胞数组的第一行中排除列标题。其余行包含数据。

C = Patients(2:end,:)
C=6×5 cell array
    {["Chang" ]}    {[38]}    {[71]}    {[176]}    {[1]}
    {["Brown" ]}    {[43]}    {[69]}    {[163]}    {[0]}
    {["Ruiz"  ]}    {[38]}    {[64]}    {[131]}    {[0]}
    {["Lee"   ]}    {[38]}    {[64]}    {[131]}    {[0]}
    {["Smith" ]}    {[40]}    {[67]}    {[133]}    {[0]}
    {["Garcia"]}    {[49]}    {[64]}    {[119]}    {[0]}

C 转换为表。该表具有来自 Patients 的数据。但变量名称是 C1,...,C5

T = cell2table(C)
T=6×5 table
       C1       C2    C3    C4      C5  
    ________    __    __    ___    _____

    "Chang"     38    71    176    true 
    "Brown"     43    69    163    false
    "Ruiz"      38    64    131    false
    "Lee"       38    64    131    false
    "Smith"     40    67    133    false
    "Garcia"    49    64    119    false

通过将表属性 T.Properties.VariableNames 设置为包含来自元胞数组的第一行的名称来更改变量名称。要从第一行中提取姓氏,请使用花括号。然后将这些姓氏串联成字符串数组。将字符串数组赋给 T.Properties.VariableNames

ColumnHeadings = [Patients{1,:}]
ColumnHeadings = 1×5 string
    "LastName"    "Age"    "Height"    "Weight"    "Smoker"

T.Properties.VariableNames = ColumnHeadings
T=6×5 table
    LastName    Age    Height    Weight    Smoker
    ________    ___    ______    ______    ______

    "Chang"     38       71       176      true  
    "Brown"     43       69       163      false 
    "Ruiz"      38       64       131      false 
    "Lee"       38       64       131      false 
    "Smith"     40       67       133      false 
    "Garcia"    49       64       119      false 

输入参数

全部折叠

输入元胞数组,指定为二维元胞数组。C 的每一列为一个表变量提供数据。

如果 C 的一列中元胞的内容具有:

  • 兼容的大小和数据类型,并且每个元胞都有一个包含一行的数组,则对应的表变量是同构数组

    示例:

    C = {[1 2] 3; [4 5] 6}
    T = cell2table(C)
    
    T =
      2×2 table
          C1      C2
        ______    __
        1    2    3 
        4    5    6 
    
  • 不同大小、不兼容的数据类型或任一元胞具有一个必须为标量的对象或具有一个包含多行的数组,则对应的表变量是元胞数组

    (例如,字典和函数句柄始终为标量。必须为标量的对象无法串联成一个同构数组。因此,cell2table 必须将它们收集到一个元胞数组中。)

    示例:

    C = {[1 2] 3; 4 5}
    T = cell2table(C)
    
    T =
      2×2 table
          C1       C2
        _______    __
        {[1 2]}    3 
        {[  4]}    5 
    

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: RowNames=["row1" "row2" "row3"] 对于一个具有三行的表使用行名称 row1row2row3

行名称,指定为字符串数组或字符向量元胞数组,其元素为非空且各不相同。行名称的数量必须等于输入数组的行数。

行名称可以包含任何 Unicode® 字符,包括空格和非 ASCII 字符,但冒号字符 : 除外。

如果您指定的行名称包含前导或尾随空白字符,则 cell2table 会将它们从行名称中删除。

变量名称,指定为字符串数组或字符向量元胞数组,其元素为非空且各不相同。变量名称的数量必须等于输入数组的列数。

变量名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。但是,变量名称不能与任何表维度名称或保留名称 PropertiesRowNamesVariableNames 或冒号字符 : 匹配。

维度名称,指定为二元素字符串数组或二元素字符向量元胞数组,其元素为非空且各不相同。

维度名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。但是,维度名称不能与任何表变量名称或保留名称 PropertiesRowNamesVariableNames 或冒号字符 : 匹配。

或者,在所有版本中,您可以通过设置表的 DimensionNames 属性来指定维度名称。

输出参量

全部折叠

输出表,以表形式返回。该表可以存储元数据,例如描述、变量单位、变量名称和行名称。有关详细信息,请参阅 table 的“属性”部分。

扩展功能

全部展开

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2013b 中推出

全部展开