Matlab 基于结构名称访问结构字段

Matlab 基于结构名称访问结构字段,matlab,struct,Matlab,Struct,我在访问MATLAB中struct的每个字段时遇到问题。我试图将其转换为单元格,但它给了我错误:( 如何使用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

我在访问MATLAB中struct的每个字段时遇到问题。我试图将其转换为单元格,但它给了我错误:( 如何使用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

如果有人能帮助我,我将不胜感激。

您可以使用
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

+1您的回答对我帮助很大。我只想补充一点,这可以很容易地与字段名(在我的例子中是字符串)的排序操作相结合:for tempFieldname=sort(fieldnames))“。。。