2

我在 excel 中有一个日期集,它以以下格式存储日期

12:59  
1:00

当它被读入matlab时,它被表示为

0.5410
0.0417

这导致了不正确的图表绘制。我意识到第二个输入应该是 13:00,而不是 1:00。在绘制图形之前,如何在 matlab 中预处理这些信息,确切地说,代表 13:00 到 23:59 的值是多少?如何在matlab中检查它?

4

3 回答 3

2

看起来您从 Excel 中的导入已将其作为日期序列号引入

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

我希望您也需要使用该DateStr功能

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

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

编辑:

或替代

addtodate()

addtodate(0.0417,12,'hour')

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

于 2013-08-01T10:39:15.100 回答
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 信息,您可能更愿意进行预处理。(以防人们在办公时间以外工作)。

于 2013-08-01T14:04:37.517 回答
0

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

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

确保测试它,尤其是在 12pm-1am 和 12am-1pm 时间

于 2013-08-01T10:51:42.317 回答