数组的结构数组到2D数组

时间:2018-09-04 08:35:25

标签: matlab struct

我有以下结构体数组:

item.Position=[];
item.Cost=0;
items=repmat(item,1000,1);
for i=1:1000
    items(i).Position = floor(ones(1,5)*rand*10);
    items(i).Cost = rand;
end

我想将Position提取为2D数组。因此,结果应为:

1 2 3 4 5 6 7
9 2 4 1 0 3 4 
5 4 3 2 4 9 8
....
0 2 4 8 6 3 1 

是否可以在MATLAB中不循环?

1 个答案:

答案 0 :(得分:3)

您可以使用items.Position收集[]的输出。但是,这会将其收集为一个长数组。因此,要获得矩阵,您将需要对其进行重塑,例如

%Build data
item.Position=[ 1 2 3 4 5 6 7];
item.Cost=0;
items=repmat(item,1000,1);

%Collect output
tmp = [items.Position];

%Reshape
res = reshape(tmp,7,[]).';

收集和整形当然可以一步完成,为清晰起见,我将其分成了几个部分。