Преобразовать массив ячеек в массив структуры
structArray = cell2struct(cellArray, fields, dim)
создает массив структуры, structArray = cell2struct(cellArray, fields, dim)structArray, из информации, содержащейся в массиве ячеек cellArray.
fields аргумент задает имена полей для массива структуры. Этот аргумент является символьным массивом, массивом ячеек символьных векторов или строковым массивом.
dim аргумент указывает MATLAB ®, какую ось массива ячеек использовать при создании массива структуры. Использовать числовое значениеdouble определить dim.
Создание структурного массива с полями, производными от N строки массива ячеек, укажите N имена полей в fields аргумент и число 1 в dim аргумент. Создание структурного массива с полями, производными от M столбцы массива ячеек, укажите M имена полей в fields аргумент и число 2 в dim аргумент.
structArray output - массив структуры с 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}Это результирующий массив ячеек:

Преобразовать массив ячеек в структуру вдоль размера 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'Преобразовать тот же массив ячеек в структуру вдоль размера 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'
Преобразовать только часть массива ячеек в структуру:
Преобразование только первой и последней строк массива ячеек. В результате получается массив структуры 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