我有以下结构体数组:
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中不循环?
答案 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,[]).';
收集和整形当然可以一步完成,为清晰起见,我将其分成了几个部分。