insert datetime in array
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
how can i insert datetime in the datetime array?
Example: insert 2008-03-28 in array
result: 2008-01-05 2008-02-02 2008-03-01 2008-03-28 2008-04-05 ........
0 commentaires
Réponse acceptée
Voss
le 27 Fév 2024
Modifié(e) : Voss
le 27 Fév 2024
I assume the array is sorted and needs to remain sorted after inserting the new element.
One easy way is to concatenate the new element with the array and then sort that new array:
% a datetime array:
fmt = 'uuuu-MM-dd';
dt_array = datetime({'2008-01-05','2008-02-02','2008-03-01','2008-04-05'},'InputFormat',fmt)
% a datetime scalar:
new_dt = datetime('2008-03-28','InputFormat',fmt)
% concatenate and sort:
dt_array = sort([dt_array new_dt])
1 commentaire
Voss
le 27 Fév 2024
Another more involved way is to find where the new element belongs in the array and insert it there:
% a datetime array:
fmt = 'uuuu-MM-dd';
dt_array = datetime({'2008-01-05','2008-02-02','2008-03-01','2008-04-05'},'InputFormat',fmt)
% a datetime scalar:
new_dt = datetime('2008-03-28','InputFormat',fmt)
% make sure the array is sorted
if ~issorted(dt_array)
% and sort it if not
dt_array = sort(dt_array);
end
% find the index of the first element of dt_array later than new_dt
idx = find(dt_array > new_dt, 1);
% if there are no elements later than new_dt
if isempty(idx)
% then new_dt goes on the end
idx = numel(dt_array)+1;
end
% insert dt_new at index idx in dt_array
dt_array = [dt_array(1:idx-1) new_dt dt_array(idx:end)]
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Data Distribution Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!