Преобразуйте массив ячеек в массив структур
structArray
=
cell2struct(cellArray
, fields
, dim
)
создает массив структур, structArray
=
cell2struct(cellArray
, fields
, dim
)structArray
, из информации, содержащейся в массиве ячеек cellArray
.
The fields
аргумент задает имена полей для массива структур. Этот аргумент является символьным массивом, массивом ячеек векторов символов или строковых массивов.
The dim
аргумент говорит MATLAB® какая ось массива ячеек будет использоваться при создании массива структур. Используйте числовое double
для задания dim
.
Чтобы создать массив структур с полями, производными от N
строки массива ячеек, задайте N
имена полей в fields
аргумент и число 1 в dim
аргумент. Чтобы создать массив структур с полями, производными от M
столбцы массива ячеек, задайте M
имена полей в fields
аргумент и число 2 в dim
аргумент.
The structArray
выход - массив структур с N
полей, где N
равно количеству полей в fields
входной параметр. Количество полей в получившейся структуре должно равняться количеству камер по размерности dim
который вы хотите преобразовать.
Создайте следующую таблицу для использования с примерами в этом разделе. В таблице перечислены сведения о сотрудниках небольшой инжиниринговой компании. Чтение таблицы по строкам показывает имена сотрудников по подразделениям. Чтение таблицы по столбцам показывает количество лет, в течение которых каждый сотрудник работал в компании.
5 лет | 10 лет | 15 лет | |
---|---|---|---|
Развитие | Ли, Рид, Хилл | Дин, Фрай | Лейн, Фокс, Кинг |
Продажи | Хау, Бернс | Кирби, Форд | Зал |
Управление | Цена | Кларк, Ши | Симс |
Качество | Бейтс, Грей | Нэш | Кей, Чейз |
Документация | Ллойд, Янг | Райан, Харт, Рой | Болото |
Введите следующие команды, чтобы создать начальный массив ячеек employees
:
devel = {{'Lee','Reed','Hill'}, {'Dean','Frye'}, ... {'Lane','Fox','King'}}; sales = {{'Howe','Burns'}, {'Kirby','Ford'}, {'Hall'}}; mgmt = {{'Price'}, {'Clark','Shea'}, {'Sims'}}; qual = {{'Bates','Gray'}, {'Nash'}, {'Kay','Chase'}}; docu = {{'Lloyd','Young'}, {'Ryan','Hart','Roy'}, {'Marsh'}}; employees = [devel; sales; mgmt; qual; docu] employees = {1x3 cell} {1x2 cell} {1x3 cell} {1x2 cell} {1x2 cell} {1x1 cell} {1x1 cell} {1x2 cell} {1x1 cell} {1x2 cell} {1x1 cell} {1x2 cell} {1x2 cell} {1x3 cell} {1x1 cell}
Это получившийся массив ячеек:
Преобразуйте массив ячеек в struct по размерности 1:
Преобразуйте массив ячеек 5 на 3 вдоль его первой размерности, чтобы создать массив структур 3 на 1 с 5 полями. Каждая из строк по размерности 1 массива ячеек становится полем в массиве структур:
При прохождении первого (т.е. вертикального) размерности существует 5 строк с заголовками строк, которые читаются следующим образом:
rowHeadings = {'development', 'sales', 'management', ... 'quality', 'documentation'};
Преобразуйте массив ячеек в массив структур, depts
, в отношении этой размерности:
depts = cell2struct(employees, rowHeadings, 1) depts = 3x1 struct array with fields: development sales management quality documentation
Используйте эту структуру, ориентированную на строку, чтобы найти имена сотрудников, работающих в компании до 10 лет:
depts(1:2).development ans = 'Lee' 'Reed' 'Hill' ans = 'Dean' 'Frye'
Преобразуйте тот же массив ячеек в struct по размерности 2:
Преобразуйте массив ячеек 5 на 3 вдоль его второго измерения, чтобы создать массив структур 5 на 1 с 3 полями. Каждый из столбцов размерности 2 массива ячеек становится полем в массиве структур:
Пройдите массив ячеек по второму (или горизонтальному) размерности. Поля заголовков столбца становятся полями получившейся структуры:
colHeadings = {'fiveYears' 'tenYears' 'fifteenYears'}; years = cell2struct(employees, colHeadings, 2) years = 5x1 struct array with fields: fiveYears tenYears fifteenYears
Используя структуру, ориентированную на столбцы, покажите, сколько сотрудников из отделов сбыта и документации проработали в компании не менее 5 лет:
[~, sales_5years, ~, ~, docu_5years] = years.fiveYears sales_5years = 'Howe' 'Burns' docu_5years = 'Lloyd' 'Young'
Преобразуйте только часть массива ячеек в struct:
Преобразуйте только первую и последнюю строки массива ячеек. Это приводит к массиву структур 3 на 1 с 2 полями:
rowHeadings = {'development', 'documentation'}; depts = cell2struct(employees([1,5],:), rowHeadings, 1) depts = 3x1 struct array with fields: development documentation
Отображать сотрудников, которые относятся к этим отделам в течение всех трех периодов времени:
for k=1:3 depts(k,:) end ans = development: {'Lee' 'Reed' 'Hill'} documentation: {'Lloyd' 'Young'} ans = development: {'Dean' 'Frye'} documentation: {'Ryan' 'Hart' 'Roy'} ans = development: {'Lane' 'Fox' 'King'} documentation: {'Marsh'}
cell
| cell2table
| fieldnames
| iscell
| isstruct
| struct
| struct2cell
| table2struct