将数组值处理到结构数组的单个字段(在Matlab中)

时间:2013-06-10 07:48:57

标签: arrays matlab struct

我认为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]

我在这里遗漏了一些语法吗?

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));