Как нарезать массив структур? - PullRequest
7 голосов
/ 25 декабря 2011

Как мне извлечь определенное поле из каждого элемента массива структуры Matlab?

>> clear x
>> x(1).a = 6;
>> x(2).a = 7;

Я бы хотел массив, содержащий 6 и 7. Ни x(:).a, ни x.a не делают то, что яхочу.

>> x(:).a

ans =    

     6


ans =

     7

Ответы [ 3 ]

9 голосов
/ 26 декабря 2011

Нет проблем - просто используйте:

arr = [x.a];

Он объединит все значения, которые вам нужны.Если у вас есть более сложные данные, вы можете использовать фигурные скобки:

b(1).x = 'John';
b(2).x = 'Doe';
arr = {b.x}; 
0 голосов
/ 06 ноября 2016

Для многомерного массива вам нужно

reshape([x.a], size(x))
0 голосов
/ 25 декабря 2011

К сожалению, я почти уверен, что у MATLAB нет хороших способов делать то, что вы хотите.Вам придется либо использовать цикл for для создания нового массива, либо вернуться назад и перепроектировать свои структуры данных.Например, вы можете использовать структуру массивов, а не массив структур.

...