我有一系列结构.让我们说
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支持多个条目,因此您可以填充许多字段.
最大的缺点是它从头开始创建结构,因此如果需要将此数据添加到现有结构中,则必须进行结构合并.