Matlab 在循环中创建多个子结构,并使用数组索引
假设我有一个名为data的结构,我想创建三个子结构,称为area、Incidents和industry。这些名称存储在一个文件中。 我的方法如下所示:Matlab 在循环中创建多个子结构,并使用数组索引,matlab,struct,Matlab,Struct,假设我有一个名为data的结构,我想创建三个子结构,称为area、Incidents和industry。这些名称存储在一个文件中。 我的方法如下所示: names={'area','inhabitants','industrie'}; for i=1:length(names) data.(names(i)) = struct; end 我得到这个错误:“动态结构引用的参数必须计算为有效的字段名。” 然而,这样做是可行的: somestr = 'area'; data.(somestr) =
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中。如果以后有人想更改代码,只需更改数组可能会容易得多。直到单元格的特定元素被删除,该元素将是一个逐个的
单元格,而不是字符。所以你只需要花括号:
names={'area','inhabitants','industrie'};
for i=1:length(names)
data.(names{i}) = struct;
end
在指定单元格的特定元素之前,该元素将是一个接一个的单元格
,而不是字符
。所以你只需要花括号:
names={'area','inhabitants','industrie'};
for i=1:length(names)
data.(names{i}) = struct;
end
非常感谢你!非常感谢你!