我有一个结构变量,想要添加一个字段并用数组的值填充行(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{:};
答案 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;