exponenta event banner

cell2struct

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

Синтаксис

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:

  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'

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

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

  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