2

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

我想将值分配给动态创建的结构(2.级别):

我的结构如下所示:

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

现在我想自动a.b填充c1, c2, c3,...cnc. 也必须动态更改第一个 leven b,所以我不能硬编码任何“路径”......所有值都包含一个前缀(例如 b 或 c)和一个后缀(只是一个循环增加的数字)

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

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

问候,波斯克伦

4

2 回答 2

4

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

>> n = 5;
>> 对于 ii = 1:11
对于 jj = 1:n
ab(ii).(sprintf('c%u', jj)) = 1;
结尾
结尾
>> 一个

一个=

    b: [1x11 结构]

>> ab(1)

答案=

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

>> ab(3)

答案=

    c1: 1
    c2: 1
    c3: 1
    c4:1
    c5:1
于 2011-03-16T10:36:52.863 回答
0

b3 的解决方案向您展示了如何使用循环创建字段,但请“不要这样做”。不能使用元胞数组吗?例如

a.b.c = cell( 1, n );
for ii=1:n
  a.b.c{ii} = rand(ii);
end
于 2011-03-16T11:50:45.580 回答