用日期Matlab绘制时间向量

时间:2018-01-02 07:18:04

标签: matlab

我正在尝试用15分钟的步骤创建一整周的时间向量。我想稍后用我的数据绘制它。我设法创建了一天15分钟的步骤向量,但是当我用我的数据绘制它时我不能(它的长度是95而不是96)。

 dv = 1/24:1/96:24/24+2/96;
 datestr(dv)

另外,我不想以'dd:MM hh:mm'的格式显示日期和时间。这是我目前的代码,我在bsxfun中遇到错误,它说操作数必须是数字数组。

    t1 = datetime(2013,11,1,8,0,0,'Format','MM:dd: HH:mm:ss');
    t2 = datetime(2013,11,7,8,0,0,'Format','MM:dd: HH:mm:ss')
    days = t1:t2
    % days = days(~ismember(weekday(days),[1 7]));
    out  = bsxfun(@plus, days, dv.');
    datestr(out)

最后,当我得到整周的矢量时,它是一个字符串格式,如何将其转换为数字并绘制它? 如果你为我提供了正确的参考资料来引导我,那将是很棒的,因为我是这个领域的新手。

由于

1 个答案:

答案 0 :(得分:2)

到第一部分:如果你想创建一天的时间窗口,我建议你在00:00(凌晨12:00)开始你的15分钟窗口,并在23:45(晚上11:45)结束所以他们都在同一天。作为一个向量,你需要从0开始的数字和1到1(1/96)的数字,因为1是一整天,你不希望第二天的00:00作为第97个值。如果你想把多天放在一起,这样你就不会重叠,这一点非常重要。

dv = 0:1/96:1-1/96;
datestr(dv)

对于第二部分,我强烈建议您从MATLAB中查看datetime(键入help datetime,然后点击'参考页面了解日期时间'如果您是新手)并阅读那部分和持续时间的参考,因为我发现这些工作很好。如果你想在之前/之后制作一个日期时间,你可以使用减号或加号,你可以比较(<)来检查哪个值更早,以及类似的东西。这是一个很好的文档和示例。 在那里你会发现如何创建这样的数组。我不确定你是怎么来bsxfun而我不知道你是否工作,但我会推荐一种不同的方法。

t1 = datetime(2013,11,1,8,0,0,'Format','MM:dd: HH:mm:ss'); % as before
t2 = datetime(2013,11,8,8,0,0,'Format','MM:dd: HH:mm:ss'); % changed the date +1 
dur1 = duration(0,15,0); % a 'duration' type with the value of 15minutes

t2=t2-dur1; %taking 15 minutes of the t2 to get rid of the 00:00 of the last day
days = t1:dur1:t2; % from t1 to t2 in 15minute-Steps 96per day*7days should be 

plot(days,rand(length(days),1)); % you can use it directly for plotting
datestr(days) %only if you want to write it to a file 

如果你使用datestr你的日期时间就变成了一个字符串,如果你想把它写到一个文件中你必须这么做(如果输出到excel,我可能不会这么想),但是你不能工作&# 39;随着日期时间。

我希望这可以帮助你开始