假设我有一个名为数据的结构,我想创建三个称为区域,居民和行业的子结构。这些名称存储在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可能会容易得多。
答案 0 :(得分:4)
在单元格的特定元素为accessed via curly braces之前,元素将是一个一个cell
而不是char
。所以你只需要花括号:
names={'area','inhabitants','industrie'};
for i=1:length(names)
data.(names{i}) = struct;
end