在matlab中将时间从凌晨1点转换为下午1点

时间:2013-08-01 10:15:35

标签: matlab

我在Excel中有一个日期集,其存储日期采用以下格式

12:59  
1:00

当它被读入matlab时,它代表

0.5410
0.0417

这导致错误的图表绘制。我意识到第二个输入应该是13:00,而不是1:00。如何在绘制图形之前在matlab中预处理此信息,确切地说,代表的值是什么,13:00到23:59?如何在matlab中查看?

3 个答案:

答案 0 :(得分:2)

看起来您从Excel导入已将其作为serial Date number

引入

我认为您需要查看Excel中的导入日期。由于Excel和Matlab处理日期的方式不同,这可能会有问题。看看这个link

我希望您还需要使用DateStr功能

例如,将时间为01:00 pm的12小时格式转换为24小时格式。

datestr('01:00 PM','HH:MM')

编辑:

或者替代

请看addtodate()

addtodate(0.0417,12,'hour')

这应该在01:00增加12小时,使其成为13:00。

答案 1 :(得分:1)

如你所知,所有下午的工作都在6点之前,并且在6点之前没有上午的工作,通过后期处理很容易解决:

例如:

x = [0.5410 0.0417];
idx = x<=6/24; %Or use 7 for example if you want to be more safe
x(idx) = x(idx)+0.5

请注意,如果您的Excel文件确实包含AM-PM信息,您可能更愿意进行预处理。 (只是让人们在办公时间外工作)。

答案 2 :(得分:0)

作为一种解决方法,您可以尝试以下转换,从时间数组tim开始,范围为0-1:

tim2  = tim*24; 
ar = zeros(1,length(tim2));
ar(diff([0 tim2])<0) = 1;
tim2 = (cumsum(ar)*12 + tim2)/24;

确保在下午12点至凌晨1点和上午12点至下午1点进行测试