【问题标题】:How to create a structure with multiple sub-structures in MATLAB?如何在 MATLAB 中创建具有多个子结构的结构?
【发布时间】: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 个变量?这可能吗?如果是的话,如何做到这一点?任何帮助将不胜感激。

【问题讨论】:

  • 你如何确定fielddom
  • @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}

标签: arrays matlab structure


【解决方案1】:
for ii=1:560,fnm=['x' num2str(ii)];d0.(fnm)=dom;end

应该做我猜的把戏吗?

【讨论】:

  • 您能否扩展该答案,并解释代码在做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多