struct2dataset

Преобразуйте массив структур в массив набора данных

Тип данных dataset может быть удален в будущем релизе. Чтобы работать с гетерогенными данными, используйте тип данных MATLAB® table вместо этого. Смотрите MATLAB документация table для получения дополнительной информации.

Синтаксис

ds = struct2dataset(S)
ds = struct2dataset(S,Name,Value)

Описание

пример

ds = struct2dataset(S) преобразовывает массив структур в массив набора данных.

пример

ds = struct2dataset(S,Name,Value) выполняет преобразование с помощью дополнительных опций, заданных одним или несколькими аргументами пары Name,Value.

Примеры

свернуть все

Преобразуйте скалярный массив структур в массив набора данных с помощью опций по умолчанию.

Создайте массив структур, чтобы преобразовать.

S.Name = {'CLARK';'BROWN';'MARTIN'};
S.Gender = {'M';'F';'M'};
S.SystolicBP = [124;122;130];
S.DiastolicBP = [93;80;92];
S
S = struct with fields:
           Name: {3x1 cell}
         Gender: {3x1 cell}
     SystolicBP: [3x1 double]
    DiastolicBP: [3x1 double]

Скалярный массив структур имеет четыре поля, каждого с тремя строками.

Преобразуйте массив структур в массив набора данных.

ds = struct2dataset(S)
ds = 
    Name            Gender     SystolicBP    DiastolicBP
    'CLARK'         'M'        124           93         
    'BROWN'         'F'        122           80         
    'MARTIN'        'M'        130           92         

Имена полей структуры в S становятся именами переменных в выходном массиве набора данных. Размер ds 3 на 4.

Преобразуйте нескалярный массив структур в массив набора данных, с помощью одного из полей структуры для имен наблюдения.

Создайте нескалярный массив структур, чтобы преобразовать.

S(1,1).Name = 'CLARK';
S(1,1).Gender = 'M';
S(1,1).SystolicBP = 124;
S(1,1).DiastolicBP = 93;

S(2,1).Name = 'BROWN';
S(2,1).Gender = 'F';
S(2,1).SystolicBP = 122;
S(2,1).DiastolicBP = 80;

S(3,1).Name = 'MARTIN';
S(3,1).Gender = 'M';
S(3,1).SystolicBP = 130;
S(3,1).DiastolicBP = 92;

S
S = 3x1 struct array with fields:
    Name
    Gender
    SystolicBP
    DiastolicBP

Это - массив структур 3 на 1 с 4 полями.

Преобразуйте массив структур в массив набора данных, с помощью поля Name для имен наблюдения.

ds = struct2dataset(S,'ReadObsNames','Name')
ds = 
              Gender     SystolicBP    DiastolicBP
    CLARK     'M'        124           93         
    BROWN     'F'        122           80         
    MARTIN    'M'        130           92         

Размер ds имеет размер 3х3, потому что поле Name структуры используется для имен наблюдения, и не как переменная типа массив набора данных.

ds.Properties.DimNames
ans = 1x2 cell array
    {'Name'}    {'Variables'}

ds.Properties.ObsNames
ans = 3x1 cell array
    {'CLARK' }
    {'BROWN' }
    {'MARTIN'}

Входные параметры

свернуть все

Введите массив структур, чтобы преобразовать в массив набора данных, заданный как скалярный массив структур с полями N, каждый со строками M или нескалярным M-by-1 массив структур с полями N.

Типы данных: struct

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'ReadObsNames','myField' указывает, что поле структуры, myField, содержит имена наблюдения.

Имя поля структуры, содержащего наблюдение, называет для выходного массива набора данных, заданного как пара, разделенная запятой, состоящая из 'ReadObsNames' и вектора символов или скаляра строки, содержащего имя поля из входного массива структур, S. Когда вы задаете имя поля, struct2dataset использует то поле, чтобы создать имена наблюдения и устанавливает ds.Properties.DimNames, равный {ReadObsNames,'Variables'}.

Например, чтобы указать, что имена наблюдения находятся в поле структуры, Names, использовании

Пример: 'ReadObsNames','Names'

По умолчанию, или если ReadObsNames равен false, struct2dataset не создает имена наблюдения, если вы не задаете имена с помощью аргумента пары "имя-значение" ObsNames.

Наблюдение называет для выходного массива набора данных, заданного как пара, разделенная запятой, состоящая из 'ObsNames' и массива строк или массива ячеек из символьных векторов, содержащего имена наблюдения. Имена не должны быть допустимыми идентификаторами MATLAB, но они должны быть уникальными.

Индикатор для того, как обработать скалярный входной массив структур, заданный как пара, разделенная запятой, состоящая из 'AsScalar' и или true или false. Значением по умолчанию является true, если S является скалярным массивом структур и false в противном случае.

По умолчанию struct2dataset преобразовывает скалярный массив структур с полями N, каждого со строками M, в M-by-N массив набора данных.

Если вместо этого вы устанавливаете AsScalar, равный false для скалярного входного массива структур, то struct2dataset преобразовывает S в массив набора данных с наблюдениями N.

Выходные аргументы

свернуть все

Выведите массив набора данных, возвращенный по умолчанию с наблюдениями M и переменными N.

  • Если S является скалярным массивом структур с полями N, каждым со строками M, то ds является M-by-N массив набора данных.

  • Если S является нескалярный M-by-1 массив структур с полями N, то ds является M-by-N массив набора данных.

  • Если S является скалярным массивом структур с полями N, каждым со строками M, и AsScalar установлен равный false, то ds является массивом набора данных с наблюдениями N.

Представленный в R2012b