Преобразуйте массив ячеек в массив структур
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 выход является массивом структур с N поля, где N равно количеству полей в fields входной параметр. Количество полей в получившейся структуре должно равняться количеству ячеек по измерению dim то, что вы хотите преобразовать.
Создайте следующую таблицу для использования с примерами в этом разделе. Таблица приводит информацию о сотрудниках небольшой Машиностроительной компании. Чтение таблицы строками показывает имена сотрудников отделом. Чтение таблицы столбцами показывает номер лет, каждый сотрудник работал в компании.
| 5 лет | 10 лет | 15 лет | |
|---|---|---|---|
| Разработка | Ли, тростник, выступ | Декан, Фрай | Маршрут, Fox, король |
| Продажи | Хоу, записи | Кирби, Форд | Холл |
| Управление | Цена | Кларк, дерево ши | Симс |
| Качество | Убавляет, серый | Нэш | Кей, преследование |
| Документация | Ллойд, молодой | Райан, олень, Рой | Болото |
Введите следующие команды, чтобы создать массив первичной клетки 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