struct2table
将结构体数组转换为表
说明
示例
将标量结构体转换为表
使用默认选项将标量结构体转换为表。
创建一个结构体数组 S
。
S.Name = ["Chang";"Brown";"Ruiz"]; S.Smoker = ["Y";"N";"Y"]; S.SystolicBP = [124;122;130]; S.DiastolicBP = [93;80;92];
标量结构体 S
具有四个字段,每个字段具有三行。
将结构体数组转换为表。
T = struct2table(S)
T=3×4 table
Name Smoker SystolicBP DiastolicBP
_______ ______ __________ ___________
"Chang" "Y" 124 93
"Brown" "N" 122 80
"Ruiz" "Y" 130 92
S
中的结构体字段名称成为输出表中的变量名称。T
的大小为 3×4。
将变量的 Name
更改为行名称,方法是修改表属性 T.Properties.RowNames
,然后删除变量 Name
。
T.Properties.RowNames = T.Name; T.Name = []; T
T=3×3 table
Smoker SystolicBP DiastolicBP
______ __________ ___________
Chang "Y" 124 93
Brown "N" 122 80
Ruiz "Y" 130 92
将非标量结构体数组转换为表
创建一个非标量结构体数组 S
。
S(1,1).Name = "Chang"; S(1,1).Smoker = "Y"; S(1,1).SystolicBP = 124; S(1,1).DiastolicBP = 93; S(2,1).Name = "Brown"; S(2,1).Smoker = "N"; S(2,1).SystolicBP = 122; S(2,1).DiastolicBP = 80; S(3,1).Name = "Ruiz"; S(3,1).Smoker = "Y"; S(3,1).SystolicBP = 130; S(3,1).DiastolicBP = 92; S
S=3×1 struct array with fields:
Name
Smoker
SystolicBP
DiastolicBP
S
是具有四个字段的 3×1 结构体数组。
将结构体数组转换为表。
T = struct2table(S)
T=3×4 table
Name Smoker SystolicBP DiastolicBP
_______ ______ __________ ___________
"Chang" "Y" 124 93
"Brown" "N" 122 80
"Ruiz" "Y" 130 92
S
中的结构体字段名称成为输出表中的变量名称。T
的大小为 3×4。
将标量结构体作为数组处理
使用 "AsArray",true
基于其字段具有不同行数的标量结构体创建一个表。
创建一个具有字段 name
、billing
和 test
的标量结构体 S
。
S.name = "John Doe";
S.billing = 127.00;
S.test = [79, 75, 73; 180, 178, 177.5; 220, 210, 205]
S = struct with fields:
name: "John Doe"
billing: 127
test: [3x3 double]
这些字段具有不同的行数。因此,不能使用 struct2table(S)
,后者默认情况下使用 "AsArray",false
。
将标量结构体作为数组处理并转换为表。
T = struct2table(S,"AsArray",true)
T=1×3 table
name billing test
__________ _______ ____________
"John Doe" 127 {3x3 double}
T
包含一行。
输入参数
S
— 结构体数组
结构体数组
结构体数组,指定为一个标量结构体数组。
如果
S
是具有n
个字段的标量结构体,所有字段都有m
行,则T
是m
×n
表。如果
S
是非标量m
×1
结构体数组(具有n
个字段),则T
是m
×n
表。
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: "RowNames",["row1","row2","row3"]
将行名称 row1
、row2
和 row3
用于表 T
。
RowNames
— 行名称
{}
(默认) | 字符串数组 | 字符向量元胞数组
行名称,指定为以逗号分隔的对组,其中包含 "RowNames"
和一个字符串数组或由非空的不同元素构成的字符向量元胞数组。
行名称可以包含任何 Unicode® 字符,包括空格和非 ASCII 字符。
如果您指定的行名称包含前导或尾部空白字符,则 struct2table
会将它们从行名称中删除。
DimensionNames
— 维度名称
二元素字符向量元胞数组 | 二元素字符串数组
自 R2021a 开始提供
维度名称,指定为二元素字符向量元胞数组或二元素字符串数组,其元素为非空且不同。
维度名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。
在 R2021a 之前,只能通过设置输出的 DimensionNames
属性来指定维度名称。
AsArray
— 如何处理标量结构体的指示符
false
(默认) | true
| 0
| 1
如何处理标量结构体的指示符,指定为逗号分隔的对组,包含 "AsArray"
和 false
、true
、0
或 1
。
|
|
|
|
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
有关详细信息,请参阅 表的代码生成 (MATLAB Coder) 和 Table Limitations for Code Generation (MATLAB Coder)。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
版本历史记录
在 R2013b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)