罗兰关于MATLAB的艺术

将想法转化为MATLAB

创建日期列表,按月计算

是否需要使用某种模式创建一个日期向量?也许这些会被用作边缘参数为直方图,每个月。

最好的创造方式是什么datetime阵列每个元素是本月的第一个元素?什么是“最好的”甚至是什么意思?- 最少的击键,最少的函数调用,最可读,最灵活,最可维护等等。假设我想生产这样的东西:

2018-JAN-01,2018-Feb-01,2018-Mar-01,...

事实上,有很多合适的方式。这里有一些。

内容

简单地使用datetime

刚使用datetime并指定月份向量。这是作品

1:12 mydates1 = datetime(2018年,1)
MyDates1 = 1×12 DateTime阵列列1到2018-201-1A-2018 01-MAR-2018 01-APR-2018 01-APR-2018 01-May-2018栏目6到10 01-Jun-2018 01-JUL-2018 01-20182018年8月01日-201-2018 01-OCT-2018栏目11到2018 01-ov-2018

当我使用它时,我可以找到每个月的天数eomday

numdays = EoMday(年(yddates1),月份(yddates1));酒吧(MyDates1,Numdays)

如果几个月跨越几年怎么办?

如果所讨论的月份跨越了几年,那么您可以使用Calmonths.

mydates2 = datetime(2017、1、1):calmonths (1): datetime(2018、7、1)
mydates2 = 1×19 datetime数组列1到5 01-Jan-2017 01-Feb-2017 01-Mar-2017 01- april -2017 01-May-2017列6到10 01- june -2017 01- july -2017 01-Aug-2017 01-Sep-2017 01-Oct-2017列11到15 01-Nov-2017 01-Dec-2017 01-Jan-2018 01-Feb-2018 01- march -2018 01-Jun-2018 01- july -2018

此外,你可以超过12个月datetime仍然按照预期工作,不需要Calmonths.

MyDates3 = DateTime(2018,1:24,1);

7:18 mydates4 = datetime(2017年,1)
mydates4 = 1×12 datetime数组列1到5 01- july -2017 01-Aug-2017 01-Sep-2017 01-Oct-2017 01-Nov-2017列6到10 01-Dec-2017 01-Jan-2018 01-Feb-2018 01-Mar-2018 01- april -2018 11到12 01-May-2018 01- june -2018

然而,跟踪相对月的转变开始对我来说有自己的精神开销。

使用calmonths的另一种方式

试一试。找到正确的开始日期,然后添加正确的数量Calmonths.从那里。

Mydates5 = datetime(2017,7,1) + calmonths(0:11)
mydates5 = 1×12 datetime列1到5 01- 7 -2017 01- 8 -2017 01- 9 -2017 01-Oct-2017 01- 11 -2017列6到10 01- 12 -2017 01- 1- 2018 01- 2 -2018 01- 3 -2018 01- 4 -2018列11到12 01- 5 -2018 01- 6 -2018

你的想法呢?

你还有别的方法来制作日期列表吗?你对这类情况的偏好是什么?请让我知道这里




发布与MATLAB®R2018b

|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击这里登录您的MathWorks帐户或创建新的。