struct2table
将结构体数组转换为表
说明
可在前面语法中的输入参量外使用一个或多个名称-值参量来指定选项。T = struct2table(S,Name=Value)
例如,您可以通过将 AsArray 设置为 true 来强制 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。
要从字段具有不同行数的标量结构体创建一个表,请将该标量结构体视为结构体数组。
创建一个具有字段 name、billing 和 test 的标量结构体。
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: [3×3 double]
在这种情况下,您无法使用 struct2table(S),因为字段具有不同行数。
此时,请通过设置 AsArray 名称-值参量将输入视为结构体数组。即使字段具有不同行数,此语法也使您能够将标量结构体转换为一个单行表。
T = struct2table(S,AsArray=true)
T=1×3 table
name billing test
__________ _______ ____________
"John Doe" 127 {3×3 double}
输入参数
输入数组,指定为标量结构体或结构体数组。
名称-值参数
将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
示例: 当 S 是标量结构体时,struct2table(S,AsArray=true) 将 S 转换为一个单行表。
行名称,指定为字符串数组或字符向量元胞数组,其元素为非空且各不相同。行名称的数量必须等于输入数组的行数。
行名称可以包含任何 Unicode® 字符,包括空格和非 ASCII 字符,但冒号字符 : 除外。
如果您指定的行名称包含前导或尾随空白字符,则 struct2table 会将它们从行名称中删除。
维度名称,指定为二元素字符串数组或二元素字符向量元胞数组,其元素为非空且各不相同。
维度名称可以包含任何 Unicode 字符,包括空格和非 ASCII 字符。但是,维度名称不能与任何表变量名称或保留名称 Properties、RowNames、VariableNames 或冒号字符 : 匹配。
或者,在所有版本中,您可以通过设置表的 DimensionNames 属性来指定维度名称。
将输入视为结构体数组的标志,指定为数值或逻辑值 1 (true) 或 0 (false)。
如果输入是非标量结构体数组,则此值为默认值 | 将结构体数组转换为一个表,每个结构体对应一行,结构体数组的每个字段对应一个变量。这些字段可以有不同大小。 如果字段
|
如果输入是标量结构体,则此值为默认值 | 将具有 示例: S.a = [1;2;3] S.b = [4 5;6 7;8 9] T = struct2table(S) T =
3×2 table
a b
_ ______
1 4 5
2 6 7
3 8 9
|
扩展功能
版本历史记录
在 R2013b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)