概述
创建时间表
创建一个包含 2017 年 5 月中若干天的模拟天气测量值的时间表。时间表变量 Tmax 和 Tmin 包含每日最高温度和最低温度的读数,PrecipTotal 包含该日的总降水量。WXEvent 是一个分类数组,用于记录某个给定日期是否发生了特定类型的天气事件,例如雷电或冰雹。该时间表包含从 2017 年 5 月 4 日到 5 月 10 日的模拟数据,但缺失 5 月 6 日和 5 月 7 日这两天的数据。
Date = [datetime(2017,5,4) datetime(2017,5,5) datetime(2017,5,8:10)]';
Tmax = [60 62 56 59 60]';
Tmin = [44 45 40 42 45]';
PrecipTotal = [0.2 0 0 0.15 0]';
WXEvent = [2 0 0 1 0]';
WXEvent = categorical(WXEvent,[0 1 2 3 4],{'None','Thunder','Hail','Fog','Tornado'});
Station1 = timetable(Date,Tmax,Tmin,PrecipTotal,WXEvent)
Station1=5×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ____ ___________ _______
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
对连续和离散的时间表变量重采样
要为缺失的这两天填充数据,可以使用 retime 函数。如果您在未指定方法的情况下调用 retime,则 retime 会使用缺失数据指示符来填充空缺。例如,retime 使用 NaN 值填充数值变量的空缺,使用 undefined 元素填充分类变量的空缺。
Station1Daily = retime(Station1,'daily')
Station1Daily=7×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ____ ___________ ___________
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
06-May-2017 NaN NaN NaN
07-May-2017 NaN NaN NaN
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
如果您在调用 retime 时指定了方法,该函数将使用同一方法来填充每个变量的空缺。要将不同的方法应用于不同的变量,您可以调用 retime 多次,每次都对时间表进行索引以访问不同的变量子集。
但是,您也可以通过指定时间表的 VariableContinuity 属性来应用不同的方法。您可以指定各个变量是包含连续数据还是离散数据。然后,retime 函数将不同的方法应用于各个时间表变量,具体取决于对应的 VariableContinuity 值。
如果您指定 VariableContinuity,则 retime 函数会使用以下方法填充输出时间表变量:
'unset' - 使用该类型的缺失数据指示符(例如对于数值变量使用 NaN)来填充值。
'continuous' - 使用线性插值方法填充值。
'step' - 使用上一个值填充值。
'event' - 使用该类型的缺失数据指示符来填充值。
指定 Station1 中的温度数据为连续数据 (continuous)、PrecipTotal 为时间步数据 (step),WXEvent 为事件数据 (event)。
Station1.Properties.VariableContinuity = {'continuous','continuous','step','event'};
Station1.Properties
ans =
TimetableProperties with properties:
Description: ''
UserData: []
DimensionNames: {'Date' 'Variables'}
VariableNames: {'Tmax' 'Tmin' 'PrecipTotal' 'WXEvent'}
VariableDescriptions: {}
VariableUnits: {}
VariableContinuity: [continuous continuous step event]
RowTimes: [5x1 datetime]
StartTime: 04-May-2017
SampleRate: NaN
TimeStep: NaN
CustomProperties: No custom properties are set.
Use addprop and rmprop to modify CustomProperties.
对 Station1 中的数据重采样。基于赋给 VariableContinuity 的值,retime 函数会插入温度数据、在 PrecipTotal 中填充前一天的值,并使用 undefined 元素填充 WXEvent。
Station1Daily = retime(Station1,'daily')
Station1Daily=7×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ______ ___________ ___________
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
06-May-2017 60 43.333 0
07-May-2017 58 41.667 0
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
如果您指定了方法,则 retime 会将该方法应用于所有变量,并覆盖 VariableContinuity 中的值。
Station1Missing = retime(Station1,'daily','fillwithmissing')
Station1Missing=7×4 timetable
Date Tmax Tmin PrecipTotal WXEvent
___________ ____ ____ ___________ ___________
04-May-2017 60 44 0.2 Hail
05-May-2017 62 45 0 None
06-May-2017 NaN NaN NaN
07-May-2017 NaN NaN NaN
08-May-2017 56 40 0 None
09-May-2017 59 42 0.15 Thunder
10-May-2017 60 45 0 None
同步包含连续和离散数据的时间表
synchronize 函数还可以使用不同的方法填充输出时间表变量,具体取决于在每个输入时间表的 VariableContinuity 属性中指定的值。
创建第二个时间表,其中包含第二个气象站中的压力读数(以毫巴为单位)。该时间表包含从 2017 年 5 月 4 日到 5 月 8 日的模拟读数。
Date = datetime(2017,5,4:8)';
Pressure = [995 1003 1013 1018 1006]';
Station2 = timetable(Date,Pressure)
Station2=5×1 timetable
Date Pressure
___________ ________
04-May-2017 995
05-May-2017 1003
06-May-2017 1013
07-May-2017 1018
08-May-2017 1006
使用 synchronize 函数同步这两个气象站中的数据。synchronize 会根据 Station1 的 VariableContinuity 属性的值来填充 Station1 中的变量的值。但是,由于 Station2 的 VariableContinuity 属性为空,synchronize 将使用 NaN 值来填充 Pressure。
BothStations = synchronize(Station1,Station2)
BothStations=7×5 timetable
Date Tmax Tmin PrecipTotal WXEvent Pressure
___________ ____ ______ ___________ ___________ ________
04-May-2017 60 44 0.2 Hail 995
05-May-2017 62 45 0 None 1003
06-May-2017 60 43.333 0 1013
07-May-2017 58 41.667 0 1018
08-May-2017 56 40 0 None 1006
09-May-2017 59 42 0.15 Thunder NaN
10-May-2017 60 45 0 None NaN
要指示 Station2.Pressure 包含连续数据,请指定 Station2 的 VariableContinuity 属性。虽然 Station2 只包含一个变量,但您必须使用元胞数组而非字符向量来指定 VariableContinuity。
Station2.Properties.VariableContinuity = {'continuous'};
Station2.Properties
ans =
TimetableProperties with properties:
Description: ''
UserData: []
DimensionNames: {'Date' 'Variables'}
VariableNames: {'Pressure'}
VariableDescriptions: {}
VariableUnits: {}
VariableContinuity: continuous
RowTimes: [5x1 datetime]
StartTime: 04-May-2017
SampleRate: NaN
TimeStep: 1d
CustomProperties: No custom properties are set.
Use addprop and rmprop to modify CustomProperties.
同步这两个气象站中的数据。由于 Station2.Pressure 包含连续数据,synchronize 将会填充 BothStations.Pressure 中的值。
BothStations = synchronize(Station1,Station2)
BothStations=7×5 timetable
Date Tmax Tmin PrecipTotal WXEvent Pressure
___________ ____ ______ ___________ ___________ ________
04-May-2017 60 44 0.2 Hail 995
05-May-2017 62 45 0 None 1003
06-May-2017 60 43.333 0 1013
07-May-2017 58 41.667 0 1018
08-May-2017 56 40 0 None 1006
09-May-2017 59 42 0.15 Thunder 994
10-May-2017 60 45 0 None 982
如果您将某个方法指定为 synchronize 的输入参数,则 synchronize 会将该方法应用于所有变量,就像 retime 函数所执行的一样。
最后
以上就是文静钻石为你收集整理的matlab对时间的操作,使用不同的方法对时间表变量重设时间并进行同步的全部内容,希望文章能够帮你解决matlab对时间的操作,使用不同的方法对时间表变量重设时间并进行同步所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复