Этот пример показывает, как добавить пользовательские свойства к таблицам и расписаниям, установите и получите доступ к их значениям и удалите их.
Все таблицы и расписания имеют свойства, которые содержат метаданные о них или их переменных. Можно получить доступ к этим свойствам через объект T
.Properties
, где T
является именем таблицы или расписания. Например, T
.Properties.VariableNames
возвращает массив ячеек, содержащий имена переменных T
.
Свойства вы получаете доступ через T
К .Properties
, являются частью определений типов данных timetable
и table
. Вы не можете добавить или удалить эти предопределенные свойства. Но начиная в 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);
Когда вы перемещаете или удаляете табличные переменные, и предопределенные и пользовательские свойства переупорядочиваются так, чтобы их значения соответствовали тем же переменным. В этом примере значениях 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]
addprop
| голова
| movevars
| readtable
| rmprop
| sortrows
| stackedplot
| таблица
| table2timetable