主要内容

使用事件表中找到事件的时间表

找到和标签事件时间表,附加一个eventtable到它。一个事件表的时间表事件。事件由事件时间(如果发生),通常一个事件或事件结束时间(发生了多长时间),经常一个事件标签(发生了什么),有时关于事件的附加信息。当你把一个事件表的时间表,它使您能够找到和标签中的行时间表时产生的事件。通过将时间表行与事件,您可以更容易地分析和情节它们包含的数据。

这个例子展示了如何使用信息,您可以定义事件数据已经在你的时间表。在这个例子中,导入一个时间表的测量地球自转速率从1962年到现在。旋转速度变化作为时间的函数,导致多余的长短变化积累。当你多余的情节长短作为时间的函数,情节的波峰和波谷表示事件在这个数据集。分析这些数据和事件表,使用extractevents,eventfilter,syncevents功能。(相关的工作流事件从外部数据源添加到您的时间表。工作流,看到的更多信息从外部数据添加事件表时间表)。

进口时间表与白天的时长测量

根据定义,一天就是86400秒长,第二有一个精确的定义在国际单位制(SI)。然而,实际上一天的长度变化由于几个物理原因。它随季节变化的30秒,21秒如果下定义,因为地球轨道的偏心率和倾斜的轴。平均这些季节性效应使的定义意思是太阳天不改变长度超过一年。

同样,有一个非常长期放缓地球的转速因潮汐与月球;小,相反,短期组件被认为是由于大陆冰盖的融化;非常短期周期的几十年;和难以预料的波动由于地质事件和其他原因。由于这些影响,平均太阳日的长度可能会增加或减少。近几十年来,它有上下波动,但大多是1 - 3毫秒时间超过86400秒。这种差异被称为多余的长度的一天,或多余的LOD

对于这个示例,创建一个包含多余的LOD时间表每天从1月1日,1962年,到现在。的国际地球自转服务(IERS)承担收集和发布这些数据。然而,这些数据需要预处理之前存储在MATLAB的时间表,因为修改日期朱利安日期。日前发表的数据读入一个表,使用readtable函数。重命名感兴趣的两个变量MJDExcessLOD

文件=“https://datacenter.iers.org/data/latestVersion/223_EOP_C04_14.62-NOW.IAU1980223.txt”;IERSdata = readtable(文件,“NumHeaderLines”14);IERSdata.Properties。VariableNames (8 [4]) = (“MJD”,“ExcessLOD”];

多余的LOD值存储在一个时间表,把修改后的朱利安日期datetime值。使用datetime函数与“ConvertFrom”、“mjd”名称-值参数。然后转换IERSdata从表使用的时间表table2timetable函数。

IERSdata。日期= datetime (IERSdata.MJD“ConvertFrom”,“mjd”);IERSdata。ExcessLOD= seconds(IERSdata.ExcessLOD); IERSdata = table2timetable(IERSdata(:,[“日期”,“ExcessLOD”)))
IERSdata =22274×1的时间表日期ExcessLOD ___________ _______ 01 - 1月- 1962 0.001723秒02 - 1月- 1962 0.001669秒03 - 1962年1月- 1962年1月0.001582秒04 - - 0.001496秒05 - 1月- 1962年0.001416秒06 - 1月- 1962年0.001382秒07 - 1962年1月- 1962年1月0.001413秒08 - - 0.001505秒09 - 1962年1月- 1962年1月0.001628秒10 - - 0.001738秒11 - 1962年1月- 1962年0.001794秒12 - 1月- 0.001774秒13 - 1月- 1962 0.001667秒14 - 1月- 1962 0.00151秒15 - 1962年1月- 1962年1月0.001312秒16 - - 0.001112秒⋮

画出多余的LOD作为时间的函数。

情节(IERSdata.Date IERSdata.ExcessLOD,“b -”);ylabel (“超额LOD”);

提取事件时间表

自1960年代以来已经有几个时期多余的LOD在短期内下降。如果你顺利多余的LOD数据,你可以看到这个地方的行为更容易。

光滑的多余的LOD,使用smoothdata函数。然后画出平滑数据过剩LOD。

IERSdata。SmoothedELOD = smoothdata(秒(IERSdata.ExcessLOD),“黄土”,“SmoothingFactor”、。4);情节(IERSdata.Date IERSdata.ExcessLOD,“b -”);持有情节(IERSdata.Date IERSdata.SmoothedELOD,“g -”,“线宽”2);持有ylabel (“超额LOD”);

平滑数据显示的高峰和低谷,短期趋势改变了方向。达到峰值后,多余的LOD减少。触底后,多余的LOD增加。波峰和波谷是引人注目的事件在这个数据集。

识别的波峰和波谷平滑数据,使用islocalmaxislocalmin功能。然后得到日期和多余的价值为每个波峰和波谷LOD。创建一个分类与两种类型数组,描述这两种类型的事件。

山峰=找到(islocalmax (IERSdata.SmoothedELOD));波谷=找到(islocalmin (IERSdata.SmoothedELOD));typeLabels =分类([0(大小(山峰));(大小(波谷))],[0 1]、[“高峰”,“槽”]);

一个事件表中存储高峰和低谷。提取时间的高峰和低谷IERSdata,可以使用extractevents函数。这些时间的事件时间事件表。中的值typeLabels是这些事件的事件标签。你可以考虑高峰和低谷瞬时事件,因为它们发生在特定日期的时间表。

extremaEvents = extractevents (IERSdata高峰、低谷,EventLabels = typeLabels)
extremaEvents =9×1 eventtable事件标签变量:EventLabels事件长度变量:<瞬时>日期EventLabels ___________ ___________ 11 - 1972年7月峰值截止1977年6月26日峰1993年- 10月21日峰15 - 2015年2月- 2008年12月20 -峰值- 08 - 8月- 1975槽峰值08 - 2003年1月- 1987槽05 - 11月-槽12 - 7 - 2010槽

附上新的事件表事件的属性IERSdata。找到和标签使用事件表事件,您必须首先将其附加的时间表。虽然这个时间表有超过22000行,但附加事件表标识九内发生的事件时间跨越的时间表。

IERSdata.Properties。事件= extremaEvents; IERSdata.Properties
ans = TimetableProperties属性:描述:“用户数据:[]DimensionNames:{“日期”“变量”}VariableNames: {“ExcessLOD”“SmoothedELOD”} VariableDescriptions: {} VariableUnits: {} VariableContinuity: [] RowTimes: (22274×1 datetime)开始时间:01 - 1月- 1962 SampleRate:南步伐:1 d事件:[9×1 eventtable] CustomProperties:没有自定义属性集。使用addprop和rmprop CustomProperties修改。

阴谋事件对数据

马克情节上的波峰和波谷,使用一个三角形尖向上波峰和波谷的三角尖向下。一种方便的方法来选择这些事件的时间是使用一个eventfilter

首先,创建一个事件从事件表附加到过滤器IERSdata,通过使用eventfilter函数。您可以使用事件过滤器的行下标选择行出现在事件。

持有

EF = eventfilter (IERSdata)
EF = eventfilter没有约束,没有选择变量<无约束> VariableNames:日期、EventLabels

例如,下标IERSdata显示的行发生在峰值LOD平滑过度。

IERSdataPeaks = IERSdata (EF。EventLabels = =“高峰”:)
IERSdataPeaks =5×2时间表日期ExcessLOD SmoothedELOD ___________ _________________ _______峰自1972年7月11 - 0.002331秒0.0030118截止1977年6月26日的峰值0.002236秒0.00286 21 - 10月- 1993年峰值0.0023902秒0.0023046峰15 - 2月- 2008 0.0007765秒0.00087616峰12月20 - 0.0012408 - 2015 0.0020065秒

显示的行发生在波谷LOD平滑过度。

IERSdataTroughs = IERSdata (EF。EventLabels = =“槽”:)
IERSdataTroughs =4×2时间表_______槽日期ExcessLOD SmoothedELOD ___________ _________________公司08年0.002532 - 8月- 1975秒0.0027614槽08 - 1987年1月- 0.0014924秒0.0012605槽05 - 11月- 2003 0.000559秒0.00031221 0.00074433槽自2010年7月12 - -0.000311秒

情节高峰使用三角形尖向上和低谷使用三角形尖向下。

hpeaks =情节(IERSdataPeaks,“SmoothedELOD”线型=“没有”标志=“^”MarkerFaceColor =“y”);通过门缝=情节(IERSdataTroughs,“SmoothedELOD”线型=“没有”标志=“v”MarkerFaceColor =“y”);持有

创建间隔事件的事件表

从高峰到低谷,多余的LOD减少,这意味着地球自转加速在这区间。从低谷到高峰,多余的LOD增加,这意味着旋转变慢。你可以考虑这些时间的减少和增加多余的LOD时间间隔事件。这些事件持续在重要的长度时间内的多余的LOD数据集。

改变事件表事件表,存储间隔事件。首先,将附加事件表分配给一个更方便的局部变量。然后由事件时间排序。

intervalEvents = IERSdata.Properties.Events;intervalEvents = sortrows (intervalEvents)
intervalEvents =9×1 eventtable事件标签变量:EventLabels事件长度变量:<瞬时>日期EventLabels ___________ ___________ 11 - 1975年7月- 1972年8月峰值08 - -槽26日—1987年6月- 1977年峰值08 - 1月-槽21 - 10月- 1993年05 - 11月- 2003年峰值槽15 - 2月- 2008年12 -峰值- 2010年低谷20 - 12月- 2015年7月的峰值

把事件分为间隔事件,事件结束时间分配给他们。在这个数据集,每间隔一天结束在开始下一个时间间隔。(然而,让“结束”的最后间隔是最后日期IERSdata)。分配事件结束时间作为一个新的变量intervalEvents。然后分配的新变量EventEndsVariable事件表的属性。这个任务将事件分为间隔事件。

endEvents = [intervalEvents.Date(2:结束)- 1;IERSdata.Date(结束)];intervalEvents。EventEnds = endEvents;intervalEvents.Properties。EventEndsVariable =“EventEnds”
intervalEvents =9×2 eventtable事件标签变量:EventLabels事件结束变量:EventEnds日期EventLabels EventEnds………………11 - 1972年7月峰值07 - 08年8月- 1975年8月- 1975年低谷截止1977年6月25日——1977年6月- 26峰07 - 08年1月- 1987年1月- 1987年低谷20 - 1993年10月- 1993年10月21 - - 04 - 11月- 2003年05 - 11月峰值- 2003槽14 - 2008年2月- 2008年2月15 - -峰值11 - 7月- 2010年12 - 2010年7月的低点19 - 2015年12月- 2015年12月20 - - 25 - 12月- 2022年达到顶峰

标签“高峰”“波谷”合适的瞬时事件标签,因为他们发现在平滑过度LOD曲线拐点。但是他们不是合适的标签间隔事件。改变标签“decreasingLOD”“increasingLOD”

intervalEvents。EventLabels= renamecats(intervalEvents.EventLabels,[“decreasingLOD”,“increasingLOD”])
intervalEvents =9×2 eventtable事件标签变量:EventLabels事件结束变量:EventEnds日期EventLabels EventEnds ___________ _________________ ___________ 11 - - 1972 decreasingLOD 07 - 08年8月- 1975年7月- 8月- 1975 increasingLOD截止1977年6月25日——1977年6月- 26 decreasingLOD 07 - 08年1月- 1987年1月- 1987年increasingLOD 20 - 1993年10月- 1993年10月21 - - decreasingLOD 04 - 11月- 2003年05 - 11月- 2003 increasingLOD 14 - 2008年2月- 2008年2月15 - - decreasingLOD 11 - 2010年7月- 2010年7月12 - - increasingLOD 19日——2015年12月- 2015年12月20 - - decreasingLOD 25 - 12月- 2022

第一区间始于第一高峰。然而,IERSdata有早期行之前。添加这一时期的间隔增加多余的LOD,另一行添加到事件表。活动时间是第一次约会IERSdata。其事件结束时间前一天第一高峰。

intervalEvents (IERSdata.Date (1):) = {“increasingLOD”datetime (“1972-07-10”)};intervalEvents = sortrows (intervalEvents)
intervalEvents =10×2 eventtable事件标签变量:EventLabels事件结束变量:EventEnds日期EventLabels EventEnds ___________ _________________ ___________ 01 - 1月- 1962 increasingLOD 10 - 1972年7月- 1972年7月11 - - decreasingLOD 07 - 08年8月- 1975年8月- 1975年increasingLOD截止1977年6月25日——1977年6月- 26 decreasingLOD 07 - 08年1月- 1987年1月- 1987年increasingLOD 20 - 1993年10月- 1993年10月21 - - decreasingLOD 04 - 11月- 2003年05 - 11月- 2003 increasingLOD 14 - 2008年2月- 2008年2月15 - - decreasingLOD 11 - 2010年7月- 2010年7月12 - - increasingLOD 19日——2015年12月- 2015年12月20 - - decreasingLOD 25 - 12月- 2022

您可以添加更多的数据来描述这些事件的额外事件表变量。例如,计算平均变化超过LOD在每个时间间隔(以秒为单位的日常过剩每年LOD)。将这些信息添加到间隔事件作为一个新的变量。

dTime = intervalEvents。EventEnds - intervalEvents.Date;dExcess = IERSdata.SmoothedELOD (intervalEvents.EventEnds)——IERSdata.SmoothedELOD (intervalEvents.Date);intervalEvents。AnnualAvgChange= seconds(dExcess ./ years(dTime))
intervalEvents =10×3 eventtable事件标签变量:EventLabels事件结束变量:EventEnds日期EventLabels EventEnds AnnualAvgChange ___________ _________________ ___________售予01 - 1972年1月- 1962年increasingLOD 10 - 7月- 0.00018451秒11 - 7月1972 decreasingLOD 07年8月- 1975年8月-8.1515 e-05秒08 - - 1975 increasingLOD 25 - 1977年6月- 5.2426 e-05秒26 - jun - 1977 decreasingLOD 07 - 1987年1月- 1987年1月-0.00016778秒08 - - increasingLOD 20 - 1993年10月- 0.00015395秒21日——2003年10月- 1993年decreasingLOD 04 - 11月- -0.0001985秒05 - 11月- 2003 increasingLOD 14 - 2008年2月- 2008年2月0.00013187秒15 - - decreasingLOD 11 - 7 - 2010 -5.4901 e-05秒12 - 7月2010 increasingLOD 19 - 12月- 2015年9.1307 e-05秒20 - 12月- 2015年decreasingLOD 25 - 12月- 2022 -0.00023496秒

这些结果表明,平均太阳日,平均在整个一年中,已减少在过去几年中每年约0.3毫秒。平均太阳日目前接近或略低于86400秒。然而,许多专家认为,这一趋势不会持续下去。

最后,附上间隔事件的事件表事件的属性IERSdata

IERSdata.Properties。事件= intervalEvents;

间隔事件转换为状态变量

附加事件表记录间隔事件中平滑过度LOD达到了顶峰,并开始减少或达到低谷,开始增加。另一种是代表那些变化状态变量在时间表本身。复制事件一个附加事件表中的数据变量的主要时间表,使用syncevents函数。由于这个电话,IERSdata新变量,EventLabelsAnnualAvgChange,从附加事件表复制。

IERSdata = syncevents (IERSdata)
IERSdata =22274×4时间表日期ExcessLOD SmoothedELOD EventLabels AnnualAvgChange ___________ _______ _______ _________________售予increasingLOD 01 - 1月- 1962 0.001723秒0.0010704 increasingLOD 0.00018451秒increasingLOD 02 - 1月- 1962 0.0010715 0.001669秒increasingLOD 0.00018451秒increasingLOD 03 - 1月- 1962年1月0.001582秒0.0010727 increasingLOD 0.00018451秒increasingLOD 04 - 0.0010738 - 1962 0.001496秒increasingLOD 0.00018451秒increasingLOD 05 - 1月- 1962年1月0.001416秒0.0010749 increasingLOD 0.00018451秒increasingLOD 06 - 0.0010761 - 1962 0.001382秒increasingLOD 0.00018451秒increasingLOD 07 - 1月- 1962 0.001413秒0.0010772 increasingLOD 0.00018451秒increasingLOD 08 - 1962年1月- 0.001505秒0.0010783 increasingLOD 0.00018451秒increasingLOD 09 - 1月- 1962 0.001628秒0.0010795 increasingLOD 0.00018451秒increasingLOD 10 - 1月- 1962 0.001738秒0.0010806 increasingLOD 0.00018451秒increasingLOD 11 - 1月- 1962 0.001794秒0.0010818 increasingLOD 0.00018451秒increasingLOD 12 - 1月- 1962 0.001774秒0.0010829 increasingLOD 0.00018451秒increasingLOD 13 - 1月- 1962 0.001667秒0.001084 increasingLOD 0.00018451秒increasingLOD 14 - 1月- 1962 0.00151秒0.0010852 increasingLOD 0.00018451秒increasingLOD 15 - 1月- 1962 0.001312秒0.0010863 increasingLOD increasingLOD 16 - 1月- 1962 0.001112 0.00018451 0.0010874 increasingLOD 0.00018451秒⋮

接下来,突出段情节中LOD减少过剩红色。在这种情况下,它是更方便使用EventLabels状态变量IERSdata因为你需要改变颜色在每一段的每一个数据点。

删除([hpeaks;通过门缝]);持有减少= (IERSdata。EventLabels = =“decreasingLOD”);情节(IERSdata.Date(减少),IERSdata.SmoothedELOD(减少),“r”。);持有

另外,强调这些区域的背景。在这种情况下,更方便使用的间隔事件附加事件表,因为你只需要开始和结束时间间隔的LOD减少过剩。

持有decreasingEvents = IERSdata.Properties.Events;decreasingEvents = decreasingEvents (decreasingEvents。EventLabels = =“decreasingLOD”:);(decreasingEvents startEndTimes =。日期decreasingEvents.EventEnds];h =填补(startEndTimes (: [1 2 2 1], [-。002 -。002年.005 .005),“红色”,“FaceAlpha”2,“线型”,“没有”);持有

找到更多的复杂的事件数据

多余的LOD既有1960年代以来的增加和减少。事实上,在多年有短期生LOD过剩时显著负的。这些只是非常短期的波动,但在这些时期地球是旋转一毫秒或更多86400如果秒。

情节(IERSdata.Date IERSdata.ExcessLOD,“b -”);ylabel (“超额LOD”);持有线(IERSdata。结束日期([1]),[0 0),“颜色”,“k”,“线型”,”:“)举行ylabel (“超额LOD”);

确定的日期LOD过剩是负面的。提取这些日期和多余的钟表到事件表。有超过1400行,显示事件表的前几行。

negLOD = extractevents (IERSdata IERSdata。ExcessLOD < 0, EventDataVariables =“ExcessLOD”);negLODhead =头(negLOD, 5)
negLODhead =5×1 eventtable事件标签变量:<设置>事件长度变量:<瞬时>日期ExcessLOD ___________ _________________ 12 - 1984年7月- -2.27 e-05秒13 - 7 - 1984 -9.38 e-05秒14 - 7月1984 -3.8 e-06秒09年8月- 1986年6月- -5.5 e-06秒02 - 1986 -1.33 e-05秒

确定年,那些日子里多余的LOD发生。然后使用调整时间LOD过剩功能找到最低每一年并返回一个新的事件表。(因为一个事件表是一种时间表,你可以叫时间表功能事件表。)这些都是间隔事件在某种意义上,但存储为瞬时事件标志着只有他们。

negYears =独特(dateshift (negLOD.Date“开始”,“年”));negYears。格式=“哦哦”;negLODEvents =调整时间(negLOD negYears,“最小值”);negLODEvents.Properties。VariableNames =“MinExcessLOD”
negLODEvents =25×1 eventtable事件标签变量:<设置>事件长度变量:<瞬时>日期MinExcessLOD 1984 -9.38 e-05秒1986 __ * * * -1.33 e-05秒1987 -0.0001492秒1988 -7.06 e-05秒1999 -0.0001063秒2000 -0.000311秒2001 -0.0007064秒2002 -0.0007436秒2003 -0.0009769秒2004 -0.0010672秒2005 -0.0010809秒2006 -0.0003865秒2007 -0.0006192秒2008 -0.0003945秒2009 -0.0004417秒2010 -0.000784秒2011 -0.000342秒2012 -0.0003178秒2013 -0.0003593秒2016 -1.95 e-05秒2018 -0.0006457秒2019 -0.0009571秒2020 -0.0014663秒2021 -0.001452秒2022 -3.57 e-05秒

在多余的LOD的情节,马克每年的时间轴红色时期多余的LOD是负面的。在这个数据集,这样年更频繁地发生在2000年。

持有情节([negLODEvents。日期negLODEvents.Date + calyears (1)]、[-。0016年-.0016),“r -”,“线宽”6);ylim(秒([-。0016 .0045]));持有

代表事件,您可以使用事件表,与瞬时事件或间隔事件或状态变量在时间表。表示你使用取决于哪一个是更方便的和有用的计划进行数据分析。你甚至可以表征之间切换。这些陈述都是有用的方法来将事件信息添加到您的时间戳数据的时间表。

另请参阅

|||||||||||

相关的话题