Как мне извлечь определенное поле из каждого элемента массива структуры Matlab?
>> clear x >> x(1).a = 6; >> x(2).a = 7;
Я бы хотел массив, содержащий 6 и 7. Ни x(:).a, ни x.a не делают то, что яхочу.
x(:).a
x.a
>> x(:).a ans = 6 ans = 7
Нет проблем - просто используйте:
arr = [x.a];
Он объединит все значения, которые вам нужны.Если у вас есть более сложные данные, вы можете использовать фигурные скобки:
b(1).x = 'John'; b(2).x = 'Doe'; arr = {b.x};
Для многомерного массива вам нужно
reshape([x.a], size(x))
К сожалению, я почти уверен, что у MATLAB нет хороших способов делать то, что вы хотите.Вам придется либо использовать цикл for для создания нового массива, либо вернуться назад и перепроектировать свои структуры данных.Например, вы можете использовать структуру массивов, а не массив структур.