主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

cell2table

将元胞数组转换为表

说明

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

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

T = cell2table(C,Name,Value) 通过由一个或多个 Name,Value 对组参量指定的其他选项基于元胞数组创建表。

例如,您可以指定要包含在表中的行名称或变量名称。

示例

示例

全部折叠

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

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

将元胞数组 C 转换为表并指定变量名称。

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"      

变量 T.AgeT.Calories 是数值,而变量 T.FavoriteFoodT.NutritionGrade 是字符串数组。

将元胞数组转换为表,然后包括元胞数组的第一行作为表的变量名称。

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

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,:);
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 具有变量名称 C1,...,C5

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

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

T.Properties.VariableNames = LastName
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 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: "RowNames",["row1","row2","row3"] 将行名称 row1row2row3 用于表 T

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

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

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

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

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

自 R2021a 起

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

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

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

输出参量

全部折叠

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

扩展功能

全部展开

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

版本历史记录

在 R2013b 中推出

全部展开