在第二级结构中分配

时间:2011-03-16 10:29:00

标签: matlab dynamic-variables

我正在处理matlab中一个小问题:

我想为动态创建的struct(2. level)分配值:

我的结构看起来像这样:

a.b.c = 1    %Creates a struct with two levels

现在我想将a.b c1, c2, c3,...cn作为邻居元素自动填充到c。此外,第一个版本b必须动态更改,因此我无法对任何“路径”进行硬编码...所有值都包含前缀(例如b或c)和后缀(只是一个循环增加的数字)

我主要担心的是,这个过程必须通过循环而不是手工完成(否则我会通过手动编辑进行许多复制/粘贴行)。

如果有人能给我一个提示,那就太好了。

迎接,poeschlorn

2 个答案:

答案 0 :(得分:4)

我不确定这是否是您正在寻找的。它使用动态字段名称来创建11个b条目和 n c条目:

>> n = 5;
>> for ii = 1:11
for jj = 1:n
a.b(ii).(sprintf('c%u', jj)) = 1;
end
end
>> a

a = 

    b: [1x11 struct]

>> a.b(1)

ans = 

    c1: 1
    c2: 1
    c3: 1
    c4: 1
    c5: 1

>> a.b(3)

ans = 

    c1: 1
    c2: 1
    c3: 1
    c4: 1
    c5: 1

答案 1 :(得分:0)

b3的解决方案向您展示了如何使用循环创建字段,但请“不要那样做”。你不能使用单元格数组吗? E.g。

a.b.c = cell( 1, n );
for ii=1:n
  a.b.c{ii} = rand(ii);
end