概述
本文说明如何向表和时间表中添加自定义属性、设置和访问属性值以及删除属性。
所有表和时间表都有一些包含有关这些表或其变量的元数据的属性。您可以通过 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]
使用 stackedplot 函数将 T 中的变量绘制为一个堆叠图。要仅绘制 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]
将表转换为时间表,使用电力中断时间作为行时间。使用 movevars 函数将 Region 移到表的末尾,将 RestorationTime 移到第一个变量之前。请注意,属性已相应地进行了重新排序。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]
最后
以上就是友好口红为你收集整理的MATLAB 基础知识 数据类型 表 向表和时间表中添加自定义属性的全部内容,希望文章能够帮你解决MATLAB 基础知识 数据类型 表 向表和时间表中添加自定义属性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复