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 является массивом структур с полями 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:

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

    Пересечение первого (i. e., вертикальный) размерность, существует 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

Была ли эта тема полезной?