Вы можете использовать cat
для объединения вашего массива:
s = struct('age',{10 20 20},'name',{'Bob','Max','Peter'})
1x3 struct array with fields:
age
name
age = cat(1,s.age)
age =
10
20
20
Если вы хотите использовать arrayfun
, вы бы сделали следующее:
age = arrayfun(@(x)x.age,s);
РЕДАКТИРОВАТЬ
Для объединения структуры, поля которой имеют неизвестную длину, есть два варианта: Если вы просто хотите, чтобы все "возрасты", и не имеет значения, что "возраст" # 5 заканчиваетсяв позиции 6, поскольку для "age" # 2 было две записи, вы объединяете их вдоль измерения, где все ваши "age" массивы имеют одинаковую длину.Например, если все они массивы 1x1 или 1x2 или 1x3 и т. Д., Вы пишете
age = cat(2,s.age);
Если, альтернативно, вы хотите, чтобы элемент № 2 вашего выходного массива имел две записи (потому что s(2).age
было две записи), вы попадаете в CELL ARRAY
age = {s.age};
Каждый элемент age
(доступный через скобки) представляет собой массив ячеек 1x1, который может содержать любой класс массивалюбой размер;для доступа к содержимому элемента массива ячеек вы используете фигурные скобки: age(2)
- второй элемент массива ячеек, age{2}
- содержимое указанного элемента, то есть ваш массив 1x2номера.