我正在处理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
答案 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