我认为deal
应该这样做,但事实并非如此,我找不到另一个好的解决方案。
我有一个数组a = 1:2
。我想将值1和2放入结构数组b
,如下所示:
b(1).a = 1
b(2).a = 2
令我惊讶的是,[b(1:2).a] = deal(1:2)
没有处理这些值,而是将向量[1 2]
放入结构a
的每个字段b
中:
>> b(1)
ans =
a: [1 2]
>> b(2)
ans =
a: [1 2]
我在这里遗漏了一些语法吗?
答案 0 :(得分:3)
deal
做了预期的事情。它在输出中分配输入参数,如果它只有一个参数(向量1:2
),它将复制它的次数与输出参数的数量相同。你可能正在寻找:
[b(1:2).a] = deal(1, 2); %// or simply [b.a] = deal(1, 2)
在一般情况下,您可能必须根据您的值创建一个单元格数组(例如使用num2cell
)并使用comma-separated list,例如:< / p>
C = num2cell(v); %// v stores the values
[b.a] = deal(C{:});
答案 1 :(得分:0)
从Eitan的暗示中,你可能想要这个
b = struct('a',num2cell(a));