使用cellarray在循环和索引中创建多个子结构

时间:2016-11-18 09:47:45

标签: matlab struct

假设我有一个名为数据的结构,我想创建三个称为区域,居民和行业的子结构。这些名称存储在cellarray中。 我的方法如下:

names={'area','inhabitants','industrie'};
for i=1:length(names)
data.(names(i)) = struct;
end

我收到此错误:“动态结构引用的参数必须求值为有效的字段名称。”

然而,这样做是有效的:

somestr = 'area';
data.(somestr) = struct;

这就是我尝试的原因:

names={'area','inhabitants','industrie'};
for i=1:length(names)
    somestr = names(i);
    data.(somestr) = struct;
end

但是我得到了和以前一样的错误。 我想这样做,因为我必须导入大量数据并希望将其存储在Matlab中。如果有人后来想要更改代码,那么更改cellarray可能会容易得多。

1 个答案:

答案 0 :(得分:4)

在单元格的特定元素为accessed via curly braces之前,元素将是一个一个cell而不是char。所以你只需要花括号:

names={'area','inhabitants','industrie'};
for i=1:length(names)
    data.(names{i}) = struct;
end