数组到结构数组。软件
Arrays to array of struct. MATLAB
我有三个向量 centers, radiuses, metrics
都是 Nx1(centers
是 Nx2,但这根本不是问题)。我想将它们转换为结构的向量 Nx1,其中每个结构都有字段:center, radius, metric
和该字段的相应值,如 structArray(i).metric == metrics(i)
。最好和最简单的方法是什么?
您可以通过将数据转换为元胞数组来直接使用 struct
构造函数。
structArray = struct('center', num2cell(centers,2), ...
'radius', num2cell(radiuses), ...
'metric', num2cell(metrics));
注意使用维度输入 num2cell
将 centers
变量转换为 1x2 单元格的 Nx1 数组。
如果我们尝试使用一些示例数据:
radiuses = rand(3,1);
metrics = rand(3,1);
centers = rand(3,2);
structArray = struct('center', num2cell(centers,2), ...
'radius', num2cell(radiuses), ...
'metric', num2cell(metrics));
structArray =
3x1 struct array with fields:
center
radius
metric
使用以下内容:
S = struct( 'centers', num2cell(centers), 'radiuses', num2cell(radiuses), ...
'metrics', num2cell(metrics) );
请注意,这种方法的开销(就内存消耗而言)非常高。如果您的数组 CENTERS、RADIUSES 和 METRICS 非常大,最好使用 "flat" 内存布局,即将数组存储在一个结构中:
S = struct;
S.centers = centers;
S.radiuses = radiuses;
S.metrics == metrics;
我有三个向量 centers, radiuses, metrics
都是 Nx1(centers
是 Nx2,但这根本不是问题)。我想将它们转换为结构的向量 Nx1,其中每个结构都有字段:center, radius, metric
和该字段的相应值,如 structArray(i).metric == metrics(i)
。最好和最简单的方法是什么?
您可以通过将数据转换为元胞数组来直接使用 struct
构造函数。
structArray = struct('center', num2cell(centers,2), ...
'radius', num2cell(radiuses), ...
'metric', num2cell(metrics));
注意使用维度输入 num2cell
将 centers
变量转换为 1x2 单元格的 Nx1 数组。
如果我们尝试使用一些示例数据:
radiuses = rand(3,1);
metrics = rand(3,1);
centers = rand(3,2);
structArray = struct('center', num2cell(centers,2), ...
'radius', num2cell(radiuses), ...
'metric', num2cell(metrics));
structArray =
3x1 struct array with fields:
center
radius
metric
使用以下内容:
S = struct( 'centers', num2cell(centers), 'radiuses', num2cell(radiuses), ...
'metrics', num2cell(metrics) );
请注意,这种方法的开销(就内存消耗而言)非常高。如果您的数组 CENTERS、RADIUSES 和 METRICS 非常大,最好使用 "flat" 内存布局,即将数组存储在一个结构中:
S = struct;
S.centers = centers;
S.radiuses = radiuses;
S.metrics == metrics;