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