Массив структуры массивов в 2D массив - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть следующий массив 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

Я хочу извлечь Позицию как 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 голосов
/ 04 сентября 2018

Вы можете получить вывод 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,[]).';

Сбор и изменение формы, конечно, можно выполнить за 1 шаг, я просто разделил их для ясности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...