我试图在循环中分配结构的字段值。
带空值的结构声明:
result_struct = struct('a',{},'b',{},'c',{},'d',{})
我在循环中分配值:
% assume a, b, c, d are variables in my workspace
% field names match with the variable names
for index=1:n
% some computation and store results in variables (a-d)
result_struct(index).a = a;
result_struct(index).b = b;
result_struct(index).c = c;
result_struct(index).d = d;
end
如何使用另一个循环将值分配给字段?像那样:
for fname = fieldnames(result_struct)'
result_struct(index).fname = fname; % field names and variable names match
end
答案 0 :(得分:0)
您需要使用动态字段名称分配给结构(leff-hand侧)。对于右侧,您可以使用fname
,但这很危险,因此最好将变量struct
保存到文件中,然后将其作为{{}加载回来1}}在访问fname
之前,再次使用动态字段名称。
names = fieldnames(result_struct);
for k = 1:numel(names)
% Save variable to a file
save('tmp.mat', names{k});
% Load it back into a struct
tmp = load('tmp.mat', names{k});
result_struct(index).(names{k}) = tmp.(names{k});
end
或者,您可以使用save
和load
将整个事物转换为结构,而无需遍历字段。
fields = fieldnames(result_struct);
% Save all relevant variables to a file
save('tmp.mat', fields{:});
% Load it back into the result_struct
result_struct(index) = orderfields(load('tmp.mat'), fields);