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

Arrays 将数组值处理为结构数组的单个字段(在Matlab中),arrays,matlab,struct,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)不处理值,而是将向量[12]放入结构b的每个字段a: >> b(1) ans = a: [1 2] >> b(2) ans = a: [1 2] 这里的语法有什么遗漏吗?deal实现了预期的功能。它将输入参数分布在

我认为
deal
应该这样做,但事实并非如此,我无法找到另一个好的解决方案

我有一个数组
a=1:2
。我想将值1和2放入结构数组
b
,如下所示:

b(1).a = 1
b(2).a = 2
令我惊讶的是,
[b(1:2).a]=deal(1:2)
不处理值,而是将向量
[12]
放入结构
b
的每个字段
a

>> b(1)
ans = 
    a: [1 2]

>> b(2)
ans = 
    a: [1 2]

这里的语法有什么遗漏吗?

deal
实现了预期的功能。它将输入参数分布在输出之间,如果它只有一个参数(向量
1:2
),则它复制它的次数与输出参数的数量相同。您可能正在寻找:

[b(1:2).a] = deal(1, 2); %// or simply [b.a] = deal(1, 2)
在一般情况下,您可能需要根据您的值(例如使用)创建一个单元格数组,并使用,例如:

C = num2cell(v);         %// v stores the values
[b.a] = deal(C{:});

从Eitan的暗示来看,你可能想要这个

b = struct('a',num2cell(a));