我有一个MatLab "结构",具有不同的"级别"one_answers"子结构"。当打印到单元格时,"struct"中包含的数据看起来像这样:
report.COUNTRY.SOURCE.SCENARIO.CATEGORY.ENTITY = YEAR YEAR ...;
作为一个最小的例子:
report.HUN.CRF2014.BASEYEAR.CAT0.CO2 = 1991 1992 1993 1994
report.HUN.CRF2014.BASEYEAR.CAT0.CH4 = 1995 1996 1997
report.HUN.CRF2014.BASEYEAR.CAT0.H2S = 1990 1991 1992
report.HUN.CRF2014.BASEYEAR.CAT1.N2 = 1991 1992 1993
report.HUN.CRF2014.BASEYEAR.CAT1.FGASES = 1990 1991 1992
为了生成列出不同变量组合的表,我想循环遍历"struct"中包含的字段名。
我目前正在尝试编写一个能够做到这一点的函数:
fields=fieldnames(struct);
for categoryidx=1:length(fields)
categoryname=fields{categoryidx};
if isstruct(struct.(categoryname))
category=fieldnames(struct.(categoryname));
for entityidx = 1:length(category);
entityname = category{entityidx};
if isstruct(struct.(categoryname).(entityname))
gases=fieldnames(struct.(categoryname).(entityname));
end
end
end
end
不幸的是,这只是产生任何东西!有人知道如何在这样的matlab结构中循环字段名吗?谢谢你!
你可能想看看:struct2tabler。这是一个MATLAB函数,递归地通过一个结构转换成一个表。
例如:。A = 5
A.B.C = 10
A.B.D = 15
返回一个表:
a_a,a_b_c,a_b_d
---------------------------
5,,,,10,,,,,15
免责声明:我已经写了struct2table,所以可能有点偏见,但是它是出于需求而创建的,我认为,与您的非常相似。