MATLAB 如何进行时间的运算

比如我想知道下面两个时间差应该这么做。'2018-08-0402:29:30''2018-08-0402:29:32'... 比如我想知道下面两个时间差应该这么做。

'2018-08-04 02:29:30'

'2018-08-04 02:29:32'
展开
 我来答
PeriShare
2019-04-22 · 分享PD理论最新研究成果和进展
PeriShare
采纳数:2408 获赞数:36827

向TA提问 私信TA
展开全部

这样计算

clc;clear
t1 ='2018-08-04 02:29:30';
t2 = '2018-08-04 02:29:32';
t1v = datevec(t1);
t2v = datevec(t2);
t1 = calyears(t1v(1))+calmonths(t1v(2)) + caldays(t1v(3)) + duration(t1v(4:6));
t2 = calyears(t2v(1))+calmonths(t2v(2)) + caldays(t2v(3)) + duration(t2v(4:6));
dt = t2-t1

答案


dt = 

   0h 0m 2s
追问
好像不行,出现了
未定义与 'double' 类型的输入参数相对应的函数 'calyears'。
另外,如果我想调用结果,是直接用dt吗?比如50/dt。
追答

我这里可以运行,可能是版本问题吧。现在matlab默认的都是double类型的变量,你那里面的函数库太老了。你可以试一试

clc;clear
t1 ='2018-08-04 02:29:30';
t2 = '2018-08-04 02:29:32';
t1v = datevec(t1);
t2v = datevec(t2);
t1v = int32(t1v);%不行就int8、int16、int64随便试一下,下同
t2v = int32(t2v);
t1 = calyears(t1v(1))+calmonths(t1v(2)) + caldays(t1v(3)) + duration(t1v(4:6));
t2 = calyears(t2v(1))+calmonths(t2v(2)) + caldays(t2v(3)) + duration(t2v(4:6));
dt = t2-t1

至于第二个问题,有意思

clc;clear
t1 ='2018-08-04 02:29:30';
t2 = '2018-08-04 02:29:32';
t1v = datevec(t1);
t2v = datevec(t2);
dt0 = etime(t2v,t1v)%这个是时间差单位是秒
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式