如何在Matlab中获取n天的平均数据以匹配另一个时间序列?

时间:2016-08-26 19:35:44

标签: matlab datetime time-series match average

我有每日时间序列数据,我想计算该数据的5天平均值,同时还检索每个5天平均值的相应开始日期。例如:

{
  "parser": "babel-eslint",
  "parserOptions": {
    "sourceType": "module",
    "allowImportExportEverywhere": true
  }
}

其中x和y的实际大小为92x1。

首先,当这个时间序列数据不能被5整除时,如何计算5天均值?最终,我想计算“跳跃平均值”,其中平均值不是连续计算的(例如,6月1 - 5日,6月6日至10日,等等)。

我尝试过以下操作:

x = [732099 732100 732101 732102 732103 732104 732105 732106 732107 732108];
y=  [1 5 3 4 6 2 3 5 6 8]; 

但是,Pentad_avg = mean(reshape(y(1:90),5,[]))'; %manually adjusted to be divisible by 5 Pentad_dt = x(1:5:90); %select every 5th day for time 会将日期Pentad_dt01-Jun-2004作为输出。而且,这让我想到了第二点。

我希望找到x和y的5天平均值,这些平均值对应于另一个时间序列的5天平均值。第二个时间序列从2004年6月15日到2004年8月29日(而不是2004年6月1日开始)有5天的平均数据。最终,我如何调整这两个时间序列之间的日期和5天平均值?

1 个答案:

答案 0 :(得分:0)

可以使用timeseries object完成两个时间序列之间的同步。将数据放入对象允许Matlab智能地处理它。最有用的是为您的用法添加synchronize方法。

您需要确保在每个时间序列对象上正确设置时间向量。

这可能是一个例子如下:

ts1 = timeseries(y,datestr(x));
ts2 = timeseries(OtherData,OtherTimes);
[ts1 ts2] = synchronize(ts1,ts2,'Uniform','Interval',5);

这应该返回给你每个时间序列对齐相同的时间。您还可以指定特定的时间向量,以将时间序列与使用resample方法对齐。