Matlab - 将数字解释为日期并作为结果执行简单计算

时间:2014-07-03 16:21:51

标签: matlab

我在Matlab中有一个表示日期的字符串,例如今天是20140703。我需要做的是在日期执行简单的计算(加法和减法),最常用的函数是减去一周,从而得到结果20140626

在方案中,日期为20140710,很容易减去7并得到结果(20140703),但如果日期越过新的月份,那么问题就会因为不同而出现几个月的日子等等!

如何解决?

2 个答案:

答案 0 :(得分:3)

使用格式字符串datestr的{​​{1}}和datenum转换数字(输入为字符串)并将其转换为代表天数的序列号。

'yyyymmdd'

如果输入日期>> DateNumber = datestr( datenum('20140703','yyyymmdd') - 7, 'yyyymmdd') DateNumber = 20140626 是数字而非字符串,则可以使用20140703轻松将其转换为字符串。

答案 1 :(得分:1)

标准的解决方法是使用unix_time [1],或者如果你将专门留在MATLAB中,那就是它自己的“MATLAB时间”。

为此,有些函数可以帮助您解析不同格式的字符串并将其转换为“MATLAB时间”。 [2]

Matlab时间只是一个双精度浮点数,表示自1月1日以来的天数(由于小数点,精度优于天数)。您可以在Matlab上执行常规算术运算,然后转换回您想要的格式。

编辑:请注意,如果考虑性能,您将遇到这些功能的问题,因为它们执行了大量检查以便能够处理各种输入格式。对于某些函数,您可以通过文件交换获得一些C源代码,当编译为mex时,它们的性能会更好。 [3]

[1] http://en.wikipedia.org/wiki/Unix_time
[2]请参阅datenumdatestr的文档 [3] http://www.mathworks.com/matlabcentral/fileexchange/28093-datestr2num