Преобразуйте массив ячеек в массив структур
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 из массива ячеек становится полем в массиве структур:
Пересечение первого (i. e., вертикальный) размерность, существует 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'}
ячейка
| cell2table
| имена полей
| iscell
| isstruct
| struct ()
| struct2cell
| table2struct