exponenta event banner

Добавление пользовательских свойств в таблицы и расписания

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

Все таблицы и расписания имеют свойства, содержащие метаданные о них или их переменных. Доступ к этим свойствам можно получить через T.Properties объект, где T - имя таблицы или расписания. Например, T.Properties.VariableNames возвращает массив ячеек, содержащий имена переменных T.

Свойства, доступ к которым осуществляется через T.Properties являются частью определений table и timetable типы данных. Невозможно добавить или удалить эти предопределенные свойства. Но начиная с R2018b можно добавлять и удалять собственные пользовательские свойства, изменяя T.Properties.CustomProperties объект таблицы или расписания.

Добавить свойства

Считывание данных об отключении питания в таблицу. Сортировать по первой переменной, содержащей даты и время. OutageTime. Затем просмотрите первые три строки.

T = readtable('outages.csv');
T = sortrows(T,'OutageTime');
head(T,3)
ans=3×6 table
       Region           OutageTime        Loss     Customers     RestorationTime          Cause      
    _____________    ________________    ______    __________    ________________    ________________

    {'SouthWest'}    2002-02-01 12:18    458.98    1.8202e+06    2002-02-07 16:50    {'winter storm'}
    {'MidWest'  }    2002-03-05 17:53    96.563    2.8666e+05    2002-03-10 14:41    {'wind'        }
    {'MidWest'  }    2002-03-16 06:18    186.44    2.1275e+05    2002-03-18 23:23    {'severe storm'}

Отображение его свойств. Это общие свойства всех таблиц. Обратите внимание, что также существует CustomProperties объект, но по умолчанию он не имеет свойств.

T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x6 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}
        CustomProperties: No custom properties are set.
      Use addprop and rmprop to modify CustomProperties.

Для добавления пользовательских свойств используйте addprop функция. Укажите имена свойств. Для каждого свойства также укажите, содержит ли оно метаданные для всей таблицы (аналогично Description свойства) или для его переменных (аналогично VariableNames свойство). Если свойство имеет метаданные переменных, то его значением должен быть вектор, длина которого равна числу переменных.

Добавьте пользовательские свойства, содержащие имя выходного файла, тип файла и индикаторы, переменные которых будут выводиться на печать. Рекомендуется назначить входную таблицу в качестве выходного аргумента addprop, чтобы пользовательские свойства были частью одной таблицы. Укажите, что имя выходного файла и тип файла являются метаданными таблицы с помощью 'table' вариант. Укажите, что индикаторы графика являются метаданными переменных с помощью 'variable' вариант.

T = addprop(T,{'OutputFileName','OutputFileType','ToPlot'}, ...
              {'table','table','variable'});
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x6 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: []
          OutputFileType: []
                  ToPlot: []

Задать и получить доступ к значениям пользовательских свойств

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

Задайте имя и тип выходного файла. Эти свойства содержат метаданные таблицы. Затем присвойте логический массив ToPlot собственность. Это свойство содержит метаданные переменных. В этом примере элементы значения ToPlot свойства true для каждой переменной, которая будет включена в график, и false для каждой переменной, подлежащей исключению.

T.Properties.CustomProperties.OutputFileName = 'outageResults';
T.Properties.CustomProperties.OutputFileType = '.mat';
T.Properties.CustomProperties.ToPlot = [false false true true true false];
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x6 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: 'outageResults'
          OutputFileType: '.mat'
                  ToPlot: [0 0 1 1 1 0]

Печать переменных из T в сложенном графике с использованием stackedplot функция. Для печати только Loss, Customers, и RestorationTime значения, используйте ToPlot пользовательское свойство в качестве второго входного аргумента.

stackedplot(T,T.Properties.CustomProperties.ToPlot);

Figure contains an object of type stackedplot.

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

Удалить Customers и отобразить свойства.

T.Customers = [];
T.Properties
ans = 
  TableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'Row'  'Variables'}
           VariableNames: {1x5 cell}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowNames: {}

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: 'outageResults'
          OutputFileType: '.mat'
                  ToPlot: [0 0 1 1 0]

Преобразуйте таблицу в расписание, используя время простоя как время строки. Двинуться Region в конце таблицы, и RestorationTime перед первой переменной, используя movevars функция. Обратите внимание, что свойства переупорядочены соответствующим образом. RestorationTime и Loss переменные все еще имеют индикаторы для включения в график.

T = table2timetable(T);
T = movevars(T,'Region','After','Cause');
T = movevars(T,'RestorationTime','Before',1);
T.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'OutageTime'  'Variables'}
           VariableNames: {'RestorationTime'  'Loss'  'Cause'  'Region'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [1468x1 datetime]
               StartTime: 2002-02-01 12:18
              SampleRate: NaN
                TimeStep: NaN

   Custom Properties (access using t.Properties.CustomProperties.<name>):
          OutputFileName: 'outageResults'
          OutputFileType: '.mat'
                  ToPlot: [1 1 0 0]

Удалить свойства

Можно удалить любое или все пользовательские свойства таблицы с помощью rmprop функция. Однако его нельзя использовать для удаления стандартных свойств из T.Properties, поскольку эти свойства являются частью определения table тип данных.

Удалить OutputFileName и OutputFileType пользовательские свойства. Отображение остальных свойств таблицы.

T = rmprop(T,{'OutputFileName','OutputFileType'});
T.Properties
ans = 
  TimetableProperties with properties:

             Description: ''
                UserData: []
          DimensionNames: {'OutageTime'  'Variables'}
           VariableNames: {'RestorationTime'  'Loss'  'Cause'  'Region'}
    VariableDescriptions: {}
           VariableUnits: {}
      VariableContinuity: []
                RowTimes: [1468x1 datetime]
               StartTime: 2002-02-01 12:18
              SampleRate: NaN
                TimeStep: NaN

   Custom Properties (access using t.Properties.CustomProperties.<name>):
                  ToPlot: [1 1 0 0]

См. также

| | | | | | | |

Связанные темы