如何将一个数组(double)作为字段添加到struct变量中?

时间:2017-04-13 17:55:00

标签: matlab matlab-struct

我有一个结构变量,想要添加一个字段并用数组的值填充行(double)。 以下代码有效,但不是很好。有没有更优雅的方法来添加包含值的字段而不使用mat2cell函数或for循环?

field1 = 1:10
field2 = 4:13
%create struct with field 'start' with 10 values
A = struct('start',mat2cell(field1,1,ones(1,numel(field1))))
%transform field2 to cell 
temp = mat2cell(field2,1,ones([numel(field2),1]));
%add field 'end' with 10 values
[A(1:numel(field2)).end] = temp{:};

2 个答案:

答案 0 :(得分:2)

您可以使用num2cell而不是mat2cell,它会(默认情况下)将每个元素放入其自己的单元格中。不幸的是,您仍然需要一个临时变量。

A = struct('start', num2cell(field1));
tmp = num2cell(field2);
[A.end] = tmp{:};

答案 1 :(得分:1)

下载" catstruct": https://www.mathworks.com/matlabcentral/fileexchange/7842-catstruct

clear
field1 = 1:10;
field2 = 4:13;
A = struct('start',num2cell(field1));
A = catstruct(A, struct('end',num2cell(field2)));

对于性能,您最好使用包含数组的单个字段:

clear
field1 = 1:10;
field2 = 4:13;
A=[];
A.start = field1;
A.end = field2;