我在Excel中有一个日期集,其存储日期采用以下格式
12:59
1:00
当它被读入matlab时,它代表
0.5410
0.0417
这导致错误的图表绘制。我意识到第二个输入应该是13:00,而不是1:00。如何在绘制图形之前在matlab中预处理此信息,确切地说,代表的值是什么,13:00到23:59?如何在matlab中查看?
答案 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点进行测试