Scale datetime to the length of longer array
1 次查看(过去 30 天)
显示 更早的评论
t1 = datetime([2023,03,03,10,00,0]);
t10 = datetime([2023,03,28,11,00,0]);
tstep = days(1);
T1 = t1:tstep:t10;
T1 = T1(1:length(FLWAll));
This is my datetime function that I can't get working. FLWAll is an 2500x1 long array which I want to plot against my datetime (T1). If i'm using tstep = seconds() or minutes() I can get the same length for my datetime and FLWAll, but I'd like to rescale the datetime "array" so that It shows days instead. Using tstep = days(1) I get a 1x26 datetime, which is way to short.
TLDR; I'm plotting FLWAll that is data ranging from 03-03/2023 to 28-03/2023, and I'd like to show a datetime as my X-axis, where the steps are in days.
1 个评论
chicken vector
2023-4-28
You need to provide some more information.
Your variable FLWAll is 2500x1 but what with what time-step?
Your total delta time is of 601 hours between t1 and t10, are the 2500 values linearly distributed over this interval?
采纳的回答
Cris LaPierre
2023-4-28
There are 26 days between 3-3 and 28-3. That is what a step of 1 day will give you.
I would format the xticks to display in your preferred format, but create the vector in a way that makes it easy to get the increment you need.
FLWAll = rand(2500,1);
t1 = datetime([2023,03,03,10,00,0]);
t10 = datetime([2023,03,28,11,00,0]);
tstep = (t10-t1)/(length(FLWAll)-1);
T1 = t1:tstep:t10;
plot(T1,FLWAll)
% create tick for each day
xticks(t1:days(1):t10);
xtickformat('dd')
6 个评论
Cris LaPierre
2023-5-1
You can set the linespec if you want, but unless your sampling frequency is constant, you can't just arbitrarly combine data sets.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Properties 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


