【发布时间】:2015-01-16 00:14:49
【问题描述】:
我需要在 matlab 中创建一个包含子结构的“大”结构。 在我试图处理的问题中,我有 560 个变量,每个变量分别具有域 D=[0 1 2 3 4 5 6 7]。
对于问题的一个变量,假设 x0,我已经完成了这个并且工作得很好:
field='x0';
dom=domain_var;
d0=struct(field,dom);
d0
输出是:
x0: [0 1 2 3 4 5 6 7]
其实挺好的。
field 实际上是每个变量的名称,f.e. x0,x1,x2,...,x560 和当我声明 dom=domain_var; 时,domain_var 只是一个 int 数组,其中包含每个变量的可能值,这意味着 [0 1 2 3 4 5 6 7](对于问题的每个变量都是相同的)。
问题是,我怎么能不只为一个,或只为两个结构然后连接它们,而是为 560 个变量?这可能吗?如果是的话,如何做到这一点?任何帮助将不胜感激。
【问题讨论】:
-
你如何确定
field和dom? -
@LuisMendo 是的,对。我忘了提到该字段实际上是每个变量的名称,f.e. x0,x1,x2,...x560 当我声明 dom=domain_var; , domain_var 只是一个 int 数组,其中包含每个变量的可能值,意思是 [0 1 2 3 4 5 6 7](对于问题的每个变量都是一样的)。
-
这种方式很难处理不同的变量。你最好定义一个二维数组或元胞数组
x -
@LuisMendo 你能说得更具体点吗?
-
如果每个变量的内容应该是例如
0:7:将所有变量打包成一个二维数组:[0:7; 0:7; 0:7]。然后只需使用x(1,:)、x(2,:)等。或者如果它们有不同的大小,定义一个单元数组:x = {0:7, 0:5, 1:3};然后使用x{1}、x{2}等