怎么对齐两列时间序列数据,matlab

 时间:2024-10-11 22:06:08

经常遇到两列时间序列,几千行的数据,中间缺几行,却又不知道哪里缺了,因为时间不对其,又不能直接进行计算。这里我介绍一个方法。

怎么对齐两列时间序列数据,matlab

工具/原料

matlab2017a

待解决问题

1、如下图所示,两列时间序列,一个3721行,一个3582行。相对这两列数进行计算,但由于时间序列没有对齐,数据量太大,直接找又不好找。

怎么对齐两列时间序列数据,matlab
怎么对齐两列时间序列数据,matlab

解决办法

1、定义三个数据b1_3(1,1)=0;%用于存储第一个时间轴对应数据b2_3(1,1)=0;;%用于存储第二个时间轴对应数据a=datetime('now'荑樊综鲶,'ConvertFrom','yyyy-mm-dd hh-ss-ms');%用于存储时间轴

怎么对齐两列时间序列数据,matlab

2、确定两列数据各自长度。这里用了size函数。

怎么对齐两列时间序列数据,matlab

3、这里我用到了两个for循环(PS:for循环好像 速度有点慢,不过数据量小影响不到)。

怎么对齐两列时间序列数据,matlab

4、依据上述方法,运行完毕之后,发现两个时间轴,有共同时间点3576个,中间缺少值只有几个。

怎么对齐两列时间序列数据,matlab

5、我写了一个function函数这是我用到的代码(输入:b1 b2两个时间轴b1_1,b2_1分别对应的数据。输出:a为共有时间轴,b1_3,b2_3为各自对应数据,bb,b2忧溲枷茫_3是我自己的运算数据)。unction [a,b1_3,b2_3,bb,b_ma]=q1(b1,b1_1,b2,b2_1)%两列时间序列数据如何对齐b1_3(1,1)=0;b2_3(1,1)=0;a=datetime('now','ConvertFrom','yyyy-mm-dd hh-ss-ms');[c_1,~]=size(b1);[c_2,~]=size(b2);t=1;for i=1:c_1 for ii=t:c_2 if b1(i,1)==b2(ii,1) b1_3(end+1,1)=b1_1(i,1); b2_3(end+1,1)=b2_1(ii,1); a(end+1,1)=b1(i,1); t=ii; break end endendbb=b1_3-b2_3;[~,tt]=max(bb);b_ma=nanmean(bb(tt-12:tt+12,1));end

怎么对齐两列时间序列数据,matlab
  • SolidWorks如何进行贴图---茶具
  • 怎样在PROE5.0将图转成STP格式
  • SolidWorks_2016_SP4完整绿色版安装教程
  • proe法兰接头的建模
  • SolidWorks笔记本电脑建模教程(1)
  • 热门搜索
    日行一善手抄报资料 格列佛游记手抄报 关于三爱的手抄报 历史手抄报内容 小学生手抄报怎么做 以新年为主题的手抄报 手抄报花边图片大全 家乡手抄报 创卫手抄报图片 手抄报设计图案大全