帮助中心帮助中心
本页翻译不是最新的。点击此处可查看最新英文版本。
结构体数组字段
value = getfield(S,field)
value = getfield(S,field1,...,fieldN)
value = getfield(S,idx,field1,...,fieldN)
value = getfield(S,idx,field1,idx1,...,fieldN,idxN)
value = getfield(S,field) 返回结构体 S 的指定字段中的值。例如,如果 S.a = 1,则 getfield(S,'a') 返回 1。
S
field
S.a = 1
getfield(S,'a')
1
作为 getfield 的替代方法,请使用圆点表示法,即 value = S.field。圆点表示法通常更高效。
getfield
value = S.field
如果 S 是非标量,则 getfield 返回数组第一个元素中的值,相当于 S(1).field。
S(1).field
示例
value = getfield(S,field1,...,fieldN) 返回存储在嵌套结构体中的值。例如,如果 S.a.b.c = 1,则 getfield(S,'a','b','c') 返回 1。
S.a.b.c = 1
getfield(S,'a','b','c')
value = getfield(S,idx,field1,...,fieldN) 指定结构体数组的元素。例如,如果 S(3,4).a = 1,则 getfield(S,{3,4},'a') 返回 1。
idx
S(3,4).a = 1
getfield(S,{3,4},'a')
value = getfield(S,idx,field1,idx1,...,fieldN,idxN) 指定字段的元素。例如,如果 S.a(2) = 1,则 getfield(S,'a',{2}) 返回 1。同样,如果 S(3,4).a(2).b = 1,则 getfield(S,{3,4},'a',{2},'b') 返回 1。
S.a(2) = 1
getfield(S,'a',{2})
S(3,4).a(2).b = 1
getfield(S,{3,4},'a',{2},'b')
全部折叠
从 what 函数返回的结构体中获取字段的值。what 函数返回一个标量结构体,其中的字段包含指定文件夹的路径以及该文件夹中各种文件的名称。
what
S = what('C:\Temp')
S = struct with fields: path: 'C:\Temp' m: {'testFunc1.m'} mlapp: {0×1 cell} mlx: {'testFunc2.mlx'} mat: {2×1 cell} mex: {0×1 cell} mdl: {0×1 cell} slx: {0×1 cell} p: {0×1 cell} classes: {0×1 cell} packages: {0×1 cell}
返回 mlx 字段中列出的所有实时脚本的名称。使用 getfield 函数时,可以访问某函数返回的结构体的字段,而无需使用临时变量来保存该结构体。
mlx
value = getfield(what('C:\Temp'),'mlx')
value = 1×1 cell array {'testFunc2.mlx'}
您也可以使用圆点表示法访问字段。
value = S.mlx
访问嵌套结构体的字段。在嵌套结构体中,在任何级别的结构体都可以包含本身是结构体的字段以及不是结构体的其他字段。
首先,创建一个嵌套结构体。
S.a.b.c = 1; S.a.b.d = 'two'; S.a.b.e = struct('f',[3 4],'g','five'); S.h = 50
S = struct with fields: a: [1x1 struct] h: 50
虽然 S 是结构体,但字段 S.a、S.a.b 和 S.a.b.e 也是结构体。
S.a
S.a.b
S.a.b.e
ans = struct with fields: b: [1x1 struct]
ans = struct with fields: c: 1 d: 'two' e: [1x1 struct]
ans = struct with fields: f: [3 4] g: 'five'
使用 getfield 函数返回 S.a.b.d 的值。指定以逗号分隔的嵌套结构体名称列表时,必须在顶层结构体和指定的字段名称之间的每个级别包含这些结构体。在本例中,以逗号分隔的结构体名称列表为 'a','b',字段名称为 'd'。
S.a.b.d
'a','b'
'd'
value = getfield(S,'a','b','d')
value = 'two'
您也可以使用圆点表示法来访问同一字段。
value = S.a.b.d
从 dir 函数返回的结构体数组的元素中获取字段的值。dir 函数返回一个结构体数组,其中的每个元素都包含有关指定文件夹中一个文件的信息。
dir
返回有关文件夹 C:\Temp 中文件的信息。该文件夹中有 5 个文件。
C:\Temp
S = dir('C:\Temp')
S = 5×1 struct array with fields: name folder date bytes isdir datenum
要显示有关第 5 个文件的信息,请对 S 进行索引。
S(5)
ans = struct with fields: name: 'testFunc2.mlx' folder: 'C:\Temp' date: '19-Jul-2018 09:43:53' bytes: 2385 isdir: 0 datenum: 7.3726e+05
使用 getfield 函数返回 S 的第 5 个元素描述的文件的名称。使用 getfield 时,请在元胞数组中指定索引。
value = getfield(S,{5},'name')
value = 'testFunc2.mlx'
作为替代方案,请对结构体数组进行索引,然后使用圆点表示法指定字段。
value = S(5).name
访问嵌套结构体的字段,其中某些层级上的结构体是结构体数组。在此示例中,S 是一个 1×2 结构体数组。第二个元素 S(2) 具有嵌套结构体 a.b,其中 b 是一个 1×3 结构体数组。
S(2)
a.b
b
首先,创建一个嵌套结构体。使用圆点表示法创建结构体后,使用 struct 函数创建另一个非标量结构体数组,并将其添加为字段。
struct
S.a = 1; S(2).a.b = struct('d',{5,10,20}); S
S=1×2 struct array with fields: a
S(2).a.b
ans=1×3 struct array with fields: d
使用 getfield 函数从 b 的第三个元素返回 d 的值。您必须使用元胞数组同时指定 S 和 b 的索引。
d
value = getfield(S,{2},'a','b',{3},'d')
value = 20
value = S(2).a.b(3).d
创建一个结构体,其中一个字段的值为数组。
S.a = [5 10 15 20 25]
S = struct with fields: a: [5 10 15 20 25]
使用 getfield 函数返回该数组的元素。要返回一个子数组,请在字段名称后面指定索引。您必须在元胞数组内指定索引。
value = getfield(S,'a',{[2:4]})
value = 1×3 10 15 20
您也可以使用圆点表示法和数组索引来访问相同的元素。
value = S.a(2:4)
结构体数组。如果 S 是非标量,则 S 的每个元素均为结构体,并且所有元素都具有相同的同名字段。
字段名称,指定为字符向量或字符串标量。
索引,指定为数值或逻辑值元胞数组。S 和字段 1 到 N-1 的索引指定结构体数组的元素。字段 N 的索引指定该字段中数组的元素,可以是任何类型。
示例: getfield(S,{1,2},'a') 等效于 S(1,2).a。
getfield(S,{1,2},'a')
S(1,2).a
示例: 如果 S.a = [5 10 20],则 getfield(S,'a',{[2,3]}) 返回 [10 20]。
S.a = [5 10 20]
getfield(S,'a',{[2,3]})
[10 20]
用法说明和限制:
字段名称必须为常量。
backgroundPool
ThreadPool
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
在 R2006a 之前推出
setfield | fieldnames | isfield | orderfields | rmfield | struct
setfield
fieldnames
isfield
orderfields
rmfield
您点击的链接对应于以下 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:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office