cell2struct

Преобразуйте массив ячеек в массив структур

Синтаксис

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:

  1. Преобразуйте массив ячеек 5 на 3 вдоль его первой размерности, чтобы создать массив структур 3 на 1 с 5 полями. Каждая из строк по размерности 1 массива ячеек становится полем в массиве структур:

    При прохождении первого (т.е. вертикального) размерности существует 5 строк с заголовками строк, которые читаются следующим образом:

    rowHeadings = {'development', 'sales', 'management', ...
       'quality', 'documentation'};
    
  2. Преобразуйте массив ячеек в массив структур, depts, в отношении этой размерности:

    depts = cell2struct(employees, rowHeadings, 1)
    depts = 
    3x1 struct array with fields:
        development
        sales
        management
        quality
        documentation
    
  3. Используйте эту структуру, ориентированную на строку, чтобы найти имена сотрудников, работающих в компании до 10 лет:

    depts(1:2).development
    ans = 
        'Lee'    'Reed'    'Hill'
    ans = 
        'Dean'    'Frye'

Преобразуйте тот же массив ячеек в struct по размерности 2:

  1. Преобразуйте массив ячеек 5 на 3 вдоль его второго измерения, чтобы создать массив структур 5 на 1 с 3 полями. Каждый из столбцов размерности 2 массива ячеек становится полем в массиве структур:

  2. Пройдите массив ячеек по второму (или горизонтальному) размерности. Поля заголовков столбца становятся полями получившейся структуры:

    colHeadings = {'fiveYears' 'tenYears' 'fifteenYears'};
    
    years = cell2struct(employees, colHeadings, 2)
    years = 
    5x1 struct array with fields:
        fiveYears
        tenYears
        fifteenYears
    
  3. Используя структуру, ориентированную на столбцы, покажите, сколько сотрудников из отделов сбыта и документации проработали в компании не менее 5 лет:

    [~, sales_5years, ~, ~, docu_5years] = years.fiveYears
    sales_5years = 
        'Howe'    'Burns'
    docu_5years = 
        'Lloyd'    'Young'
    

Преобразуйте только часть массива ячеек в struct:

  1. Преобразуйте только первую и последнюю строки массива ячеек. Это приводит к массиву структур 3 на 1 с 2 полями:

    rowHeadings = {'development', 'documentation'};
    
    depts = cell2struct(employees([1,5],:), rowHeadings, 1)
    depts = 
    3x1 struct array with fields:
        development
        documentation

  2. Отображать сотрудников, которые относятся к этим отделам в течение всех трех периодов времени:

    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'}

Расширенные возможности

Представлено до R2006a