Добавление пользовательских свойств к таблицам и Timetables

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

Все таблицы и расписания имеют свойства, которые содержат метаданные о них или их переменных. Вы можете получить доступ к этим свойствам через 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 функция. Обратите внимание, что свойства изменяются соответствующим образом. The 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]

См. также

| | | | | | | |

Похожие темы