2013-05-14 124 views
1

结构域我有问题访问MATLAB结构的各个领域。我试图将其转换然而细胞时,它给我的错误:( 如何访问每个字段有2个循环 我已经写了下面的代码:访问基于结构名

a=load(goalMFile); 
struct_name=fieldnames(a); 
struct_cell=struct2cell(a); 
cellsz = cellfun(@size,struct_cell,'uni',false); 
ans=cellsz{:}; 
row=ans(1); 
col=ans(2); 
for counter1=1:row 
for counter2=1:col 
a.struct_name{(counter1-1)*counter2+counter2} % the error is Here 
end 

end 

我会很感激,如果有人可以帮助我。

回答

3

可以与s.(fname)其中fname是char变量动态访问的结构,请注意()周围fname

一个例子阐明:。

% Example structure 
s.A = 10; 
s.B = 20; 

% Retrieve fieldnames 
fnames = fieldnames(s); 

% Loop with numeric index 
for ii = 1:numel(fnames) 
    s.(fnames{ii}) 
end 

% ...or loop by fieldname directly 
for f = fnames' 
    s.(f{:}) 
end 
+0

+1你的回答对我帮助很大。我只想补充一点,这可以通过在字段名(这是在我的情况的字符串)排序操作方便地组合:对于tempFieldname =排序(字段名(S))” ... – RobertG 2014-01-12 16:05:19