【问题标题】:interpolate missing values ( with dates as sample points) in matlab在matlab中插入缺失值(以日期为样本点)
【发布时间】:2017-05-15 10:39:04
【问题描述】:

我是 Matlab 新手,坚持理解数据类型(尤其是单元格),可能有一个我不知道的优雅解决方案。

我有一个单元格,其中包含其他带有日期的单元格:

30/09/2005
30/12/2005
...
30/09/2016

我还有一个单元格,其中的单元格包含相应的值:

1
5
...
3

我想在所有日子/或工作日内插入这些值(对我来说更好)。 我一直想做的是:

  1. 使用datenum接收日期对应的数字;
  2. 将这些日期(现在的数字)、相应的值以及它们之间的所有日期(现在的数字)插入到 interp1 中。

看似不错的计划,但功能齐全

datenum('30/12/2005')  = 13297
datenum('30/09/2016')  = 13217

给出不能使用的数字,因为较早的日期大于较晚的日期。

【问题讨论】:

标签: matlab date


【解决方案1】:

您可以在日期时间中添加任意天数。

t = datetime('now') + days(1);

此外,它还可以为您提供持续时间的天数。因此:

t0 = datetime('30/09/2005');
tEnd = datetime('30/09/2016');
durationInDays = days(tEnd - t0);
myDates(0) = t0;
for i = 2:durationInDays
   myDates(i) = myDates(i-1) + days(1);
end

【讨论】:

  • 感谢@pablo_worker,但不幸的是,我使用的是 2013b Matlab,它没有天数、持续时间函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 2013-05-23
  • 1970-01-01
相关资源
最近更新 更多