Main Content

table2struct

将表转换为结构体数组

说明

示例

S = table2struct(T) 将表或时间表 T 转换为结构体数组 ST 中的每个变量都成为 S 中的一个字段。如果 Tm×n 表或时间表,则 S 为包含 n 个字段的 m×1 结构体数组。

输出 S 不包括 T.Properties 中的表属性。

  • 如果 T 是包含行名称的表,则 S 不包含行名称。

  • 如果 T 是时间表,则 S 不包括行时间。

示例

S = table2struct(T,"ToScalar",true) 将表 T 转换为标量结构体 ST 的每个变量都会成为 S 中的字段。如果 Tm×n 表,则 S 包含 n 个字段,其中每个字段的行数都为 m

示例

全部折叠

创建一个包含五行和三个变量的表 T

T = table(categorical(["Y";"N";"Y";"N";"N"]),[38;43;38;40;49],...
    [124 93;109 77; 125 83; 117 75; 122 80],...
    'VariableNames',["Smoker" "Age" "BloodPressure"])
T=5×3 table
    Smoker    Age    BloodPressure
    ______    ___    _____________

      Y       38      124     93  
      N       43      109     77  
      Y       38      125     83  
      N       40      117     75  
      N       49      122     80  

T 转换为结构体数组。

S = table2struct(T)
S=5×1 struct array with fields:
    Smoker
    Age
    BloodPressure

该结构体为 5×1,与表 T 中的五行对应。S 的三个字段与 T 中的三个变量对应。

显示 S 的第一个元素的字段数据。

S(1)
ans = struct with fields:
           Smoker: Y
              Age: 38
    BloodPressure: [124 93]

该信息与表中的第一行对应。

创建一个包含五行和三个变量的表 T

T = table(categorical(["Y";"N";"Y";"N";"N"]),[38;43;38;40;49],...
    [124 93;109 77; 125 83; 117 75; 122 80],...
    'VariableNames',["Smoker" "Age" "BloodPressure"])
T=5×3 table
    Smoker    Age    BloodPressure
    ______    ___    _____________

      Y       38      124     93  
      N       43      109     77  
      Y       38      125     83  
      N       40      117     75  
      N       49      122     80  

T 转换为标量结构体。

S = table2struct(T,"ToScalar",true)
S = struct with fields:
           Smoker: [5x1 categorical]
              Age: [5x1 double]
    BloodPressure: [5x2 double]

标量结构体字段中的数据为 5×1,与表 T 中的五行对应。

显示字段 BloodPressure 的数据。

S.BloodPressure
ans = 5×2

   124    93
   109    77
   125    83
   117    75
   122    80

结构体字段 BloodPressure 包含表 T 中的同名变量的所有数据。

创建一个包含行名称的表 T

T = table(categorical(["Y";"N";"Y";"N";"N"]),[38;43;38;40;49],...
    [124 93;109 77; 125 83; 117 75; 122 80],...
    'VariableNames',["Smoker" "Age" "BloodPressure"],...
    'RowNames',["Chang" "Brown" "Ruiz" "Lee" "Smith"])
T=5×3 table
             Smoker    Age    BloodPressure
             ______    ___    _____________

    Chang      Y       38      124     93  
    Brown      N       43      109     77  
    Ruiz       Y       38      125     83  
    Lee        N       40      117     75  
    Smith      N       49      122     80  

T 转换为标量结构体。

S = table2struct(T,"ToScalar",true)
S = struct with fields:
           Smoker: [5x1 categorical]
              Age: [5x1 double]
    BloodPressure: [5x2 double]

为表中的行名称添加字段。

S.RowNames = T.Properties.RowNames
S = struct with fields:
           Smoker: [5x1 categorical]
              Age: [5x1 double]
    BloodPressure: [5x2 double]
         RowNames: {5x1 cell}

如果 S 为非标量结构体,请使用 [S.RowNames] = T.Properties.RowNames{:} 包含行名称来自表中的字段。

输入参数

全部折叠

输入表,指定为表或时间表。

如果 T 中的变量的名称不是有效的 MATLAB® 标识符,则 table2struct 会修改变量名以创建有效的字段名称,主要方法是删除空格并用下划线替换非 ASCII 字符。

扩展功能

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

版本历史记录

在 R2013b 中推出