5

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

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

b(1).a = 1
b(2).a = 2

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

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

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

我在这里缺少语法吗?

4

2 回答 2

3

deal做它应该做的事情。它将输入参数分布在输出之间,如果它只有一个参数(向量1:2),它复制它的次数与输出参数的数量一样多。您可能正在寻找:

[b(1:2).a] = deal(1, 2); %// or simply [b.a] = deal(1, 2)

在一般情况下,您可能必须根据您的值(例如using num2cell)创建一个元胞数组并使用逗号分隔的 list,例如:

C = num2cell(v);         %// v stores the values
[b.a] = deal(C{:});
于 2013-06-10T08:00:58.437 回答
0

从 Eitan 的提示中,您可能想要这个

b = struct('a',num2cell(a));
于 2013-10-14T11:59:01.853 回答