我已经创建了一个结构文件的单元格数组,例如:
>> res2
res2 =
Columns 1 through 7
[1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct]
Columns 8 through 10
[1x1 struct] [1x1 struct] [1x1 struct]
>> res2{1}
ans =
nchi005_randchi005: 0.1061
nfdr_randfdr: 0.0011
nlgt_randlgt: 2.9517e-004
nphast_randphast: 0.6660
ndd_rand_dd: 0.0020
ndd_rand_dd_larger: 1
>> res2{1}.nlgt_randlgt
ans =
2.9517e-004
>> res{:}.nlgt_randlgt
??? Bad cell reference operation.
是否有可能立即访问res2-cellarray的所有nlgt_randlgt字段?
答案 0 :(得分:5)
您需要做的就是将res2
从单元格数组转换为结构数组(使用cell2mat
)。然后,您可以按照您希望的方式获取结构成员。下面是一个示例,其中cdat
是包含两个成员s1
和s2
的结构的单元格数组。
cdat =
[1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct]
>> dat = cell2mat(cdat)
dat =
1x10 struct array with fields:
s1
s2
>> [dat(:).s1]
ans =
1 1 1 1 1 1 1 1 1 1
答案 1 :(得分:2)
您可以通过以下方式访问单元格:
cellfun(@(r) r.nlgt_randlgt, res2);