arrays – MATLAB结构赋值数组

我有一系列结构.让我们说

    s(1).value,…,s(5).value.

我有一个值向量,让我们说vals = [1 2 3 4 5],我想分配给结构数组.所以用伪代码写我想要:s(:).value = vals.

如下所示,有一个已知的解决方案.但是真的不可能像在伪代码中那样在1行中进行这个赋值吗?

% Vector of values
vals = [1 2 3 4 5];
n = length(vals);

% Initialize struct
s(n).values = 0;

% Put vals into my struct.values
[s(1:n).values] = ???

% Known solution that i am not satisfied with:
vals_c = num2cell(vals);
[s(1:n).values] = vals_c{:};

最好的问候,乔纳斯

最佳答案 使用
cell2struct与num2cell相结合,可以在一行中完成此操作.

% Vector of values
vals = [1 2 3 4 5];
n = length(vals);


% Put vals into my struct.values
s = cell2struct(num2cell(vals), 'values', 1)

% transpose if orientation is important
s  = s.'; 

它并不漂亮,但它确实在一条线上完成. cell2struct支持多个条目,因此您可以填充许多字段.

最大的缺点是它从头开始创建结构,因此如果需要将此数据添加到现有结构中,则必须进行结构合并.

点赞