如何将数组(双)作为字段添加到结构变量?
How to add an array (double) as a field to a struct variable?
我有一个结构变量,想添加一个字段并用数组(双精度)的值填充该行。
以下代码有效但不是很好。有没有更优雅的方法来添加包含值的字段而不使用 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{:};
您可以使用 num2cell
而不是 mat2cell
,它将(默认情况下)将每个元素放在它自己的单元格中。不幸的是,您仍然需要一个临时变量。
A = struct('start', num2cell(field1));
tmp = num2cell(field2);
[A.end] = tmp{:};
下载"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;
我有一个结构变量,想添加一个字段并用数组(双精度)的值填充该行。 以下代码有效但不是很好。有没有更优雅的方法来添加包含值的字段而不使用 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{:};
您可以使用 num2cell
而不是 mat2cell
,它将(默认情况下)将每个元素放在它自己的单元格中。不幸的是,您仍然需要一个临时变量。
A = struct('start', num2cell(field1));
tmp = num2cell(field2);
[A.end] = tmp{:};
下载"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;