下面我有一段代码,用于创建一个字段名称在数组' field_names'中定义的结构。这似乎是创建结构的一种非常笨重的方式。
有没有更好的方法可以在一行中完成此操作?也许有一些语法技巧可以帮助我避免for循环?
%array of names to create field names from
field_names = ['num1', 'num2', 'num3', 'etc'];
data = struct()
for i = 1:length(field_names)
data.field_names(i) = rand() %some random value, doesn't matter for now
end
答案 0 :(得分:2)
首先,您编写它的方式不起作用,因为field_names
应该是cell
数组,struct
动态字段引用需要括号:
data.(field_names{i}) = rand();
您可以使用cell2struct
使用这些字段名和所需的值构建struct
。
field_names = {'num1', 'num2', 'num3'};
values = num2cell(rand(size(field_names)));
S = cell2struct(values(:), field_names(:))
% num1: 0.2277
% num2: 0.4357
% num3: 0.3111
您也可以在直接致电struct
时创建所有字段和值:
S = struct('num1', rand(), 'num2', rand(), 'num3', rand());