addtodate creates too many milliseconds
2 次查看(过去 30 天)
显示 更早的评论
I wanted to create a vector of all milliseconds in a day, so I wrote
0:addtodate(0,1,'millisecond'):(1-addtodate(0,1,'millisecond'));
which resulted in a vector with 86767016 elements, instead of the expected 24*60*60*1000 = 86400000 ones.
The same with seconds worked just fine.
I assume this is due to some roundoff error, and of course I could just write (0:86400000-1)/86400000, but I was wondering if this should be considered a bug.
Also was wondering what would be the better approach in the future when adding several milliseconds - I can think of three options:
addtodate(0,1,'millisecond') + addtodate(0,1,'millisecond');
2*addtodate(0,1,'millisecond');
2/86400000;
(The last one giving a different result than the first two)
0 个评论
采纳的回答
Azzi Abdelmalek
2016-8-3
Use linspace
a=linspace(0,1-addtodate(0,1,'millisecond'),86400000);
2 个评论
Steven Lord
2016-8-3
Or colon:
msPerDay = milliseconds(days(1));
y = milliseconds(0:1:msPerDay-1);
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!