使用数组中的字段名创建结构

时间:2016-09-19 17:48:10

标签: matlab structure matlab-struct

下面我有一段代码,用于创建一个字段名称在数组' 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

1 个答案:

答案 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());