Increment dates using for loop
古いコメントを表示
I'm trying to fill a variable sized datetime array. I then want the declared datetime value to fill the first 3 elements before incrementing by one to fill the next three.This process repeats until the desired sized element is reach. See current output & desired output.
Code:
samples = input("Number of Samples to Generate: ");
DateBuilt = repmat(datetime(0,0,0),samples,1);
t = datetime(2018,1,1);
DateBuilt(1) = t
for i=1:samples
if i <= 3
DateBuilt(i) = t;
else
t = t + 1;
DateBuilt(i) = t;
end
Current Output:
Number of Samples to Generate: 14
DateBuilt =
14×1 datetime array
01-Jan-2018
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
30-Nov--0001
Desired Output:
Number of Samples to Generate: 14
DateBuilt =
14×1 datetime array
01-Jan-2018
01-Jan-2018
01-Jan-2018
02-Jan-2018
02-Jan-2018
02-Jan-2018
03-Jan-2018
03-Jan-2018
03-Jan-2018
04-Jan-2018
04-Jan-2018
04-Jan-2018
05-Jan-2018
05-Jan-2018
5 件のコメント
madhan ravi
2019 年 2 月 9 日
編集済み: madhan ravi
2019 年 2 月 9 日
Please explicitly state your desired output , so there is no guessing.
madhan ravi
2019 年 2 月 9 日
Editing a question after someone has answered is not encouraged in this forum , it makes the answer pointless!
CM
2019 年 2 月 9 日
madhan ravi
2019 年 2 月 9 日
編集済み: madhan ravi
2019 年 2 月 9 日
Why in your desired output the last date has only repeated twice , any reason for it?
CM
2019 年 2 月 9 日
採用された回答
その他の回答 (1 件)
Stephen23
2019 年 2 月 9 日
0 投票
>> D = datetime('01-Jan-2018');
>> N = 14;
>> G = 3;
>> V = D + caldays(0:ceil(N/G)-1).';
>> V = repelem(V,G);
>> V = V(1:N)
V =
01-Jan-2018
01-Jan-2018
01-Jan-2018
02-Jan-2018
02-Jan-2018
02-Jan-2018
03-Jan-2018
03-Jan-2018
03-Jan-2018
04-Jan-2018
04-Jan-2018
04-Jan-2018
05-Jan-2018
05-Jan-2018
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!