当前位置:   article > 正文

matlab里,如何创造timetable,并使用stackedplot绘制_matlab timetable

matlab timetable

       可能新学matlab的同学能够很熟练的掌握这个技能,但作为matlab陈旧用户,我还是相当不思进取的。能用旧知识解决的问题,不愿意学新知识。比如从fortran来的用户,进了matlab不稀罕矩阵操作,matlab6.5开始用户,拒绝新的数据结构。也难怪老板们喜新厌旧。说正事。

matlab从2016b版本引入了timetable这个数据类型,table的类型好像更早一点,但作为跟数字打交道的学科,对table无感。从2018b版本又引入了stackedplot这个交互式的绘图方式。我嘛,从2021年5月,才第一次听说stackedplot。

对于经常与时间序列数据打交道的用户来说,掌握这两个工具还是很有意义的。

在此不给出完整可运行的代码,仅以概念为例吧,具体内容还请移步matlab help文件查询,以及B站一个小讲座https://www.bilibili.com/video/BV17o4y1D7Km。对于这个视频,我只能说相见恨晚,跟doc文件死去活来的搞懂之后的3个月才被我发现。便宜你们了。

 

stackedplot(timetbl),可以实现如下的交互绘图,x轴有相应的时间戳,鼠标停留的位置也可以直接提示时间,及每根线对应的数值。能够十分简便的观察手头的时间序列数据以及数据直接的关系。

timetbl就是我们提到的timetable数据。

利用滚轮缩放,时间戳也会相应缩放

鼠标停留,可以提示时间、及各变量的对应数值

 

 

timetable数据在matlab变量栏里,可以看到包含第一个时间项,后面就是其他各数据,如果没有命名,默认是variable1 variable2,。。。variableN。如果有命名,就是图中这样。每个数据的名字也会在图中显示出来。

看到这里应该已经心动了吧,下面就是如何把手头的数据造为timetable格式

首先,timetable的时间为datetime格式,如果已有数据是自带时间的,可以读入matlab,并通过matlab默认的datetime、datenum、datevec、datestr等函数,转换为datetime格式。不会请查doc。matlab对时间的互相转换十分灵活,有需要的朋友最好掌握。如果已有数据的采样间隔是规律的,也可以自造time。

  1. tt0 = datetime(1951,1,1,0,0,0);
  2. tt1 = datetime(2021,7,31,23,0,0,0);
  3. step = hours(6);
  4. time = tt0:step:tt1;
  5. time = time(:);
  6. tnum = datenum(time);

 这里的time,就是数据格式是datetime。tnum是普通的double数组,也是matlab早期的datenumber 可以跟datetick配合使用。比如

  1. plot(tnum,variable1)
  2. datetick x

x轴就会变成实际时间啦。

有了time之后,按照如下方式构建timetable数据,并用stackedplot绘制出来

  1. tbl = table;
  2. tbl.Time = time;
  3. tbl.Var1 = x1
  4. tbl.Var2 = x2;
  5. ...
  6. tbl.VarN = xN;
  7. timetbl = table2timetable(tbl);
  8. ss = stackedplot(timetbl);
  9. ss.LineWidth = 1.5;
  10. ss.FontName = 'Yahei';
  11. ss.FontSize = 15;
  12. % ss.AxesProperties(1).YLimits = [ylim1, ylim2];
  13. % ss.AxesProperties(2).YLimits = PitchLimits;
  14. % ss.AxesProperties(3).YLimits = RollLimits;

Var1 Var2  VarN就是各个变量的名字,可以自由定义。注意的是,time,x1, x2 xN的数据长度是一致的。对图的装饰也请参考

以上是暂时摸索到的timetalbe构造及绘制的主要流程,供参考。

timetable还有很多强大的功能,合并、归类、整理等等,暂时都还没学会,。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/237861
推荐阅读
相关标签
  

闽ICP备14008679号