delete dates from a matrix
Mostra commenti meno recenti
I have a matrix of dates [year, month, day, hour, minutes, seconds] ex:
A=[2004 6 18 13 8 0; 2004 7 19 13 45 2; 2004 8 18 13 8 13;2004 8 18 13 9 41;2004 9 18 13 9 50;2005 1 20 13 12 38; 2005 1 17 13 12 45; 2005 2 12 12 12 23; 2005 4 12 12 12 24; 2005 4 12 12 13 49; 2005 12 12 12 13 49; 2005 12 12 12 28 20]
and I want to delete all the dates before (2004 7 22 13 23 11) and after (2005 11 23 12 14 1), can you help me?
I want how result
A=[2004 8 18 13 8 13;2004 8 18 13 9 41;2004 9 18 13 9 50;2005 1 20 13 12 38; 2005 1 17 13 12 45; 2005 2 12 12 12 23; 2005 4 12 12 12 24; 2005 4 12 12 13 49]
thanks
Risposta accettata
Più risposte (2)
KSSV
il 3 Apr 2017
A=[2004 6 18 13 8 0; 2004 7 19 13 45 2; 2004 8 18 13 8 13;2004 8 18 13 9 41;2004 9 18 13 9 50;2005 1 20 13 12 38; 2005 1 17 13 12 45; 2005 2 12 12 12 23; 2005 4 12 12 12 24; 2005 4 12 12 13 49; 2005 12 12 12 13 49; 2005 12 12 12 28 20] ;
d0 = [2004 7 22 13 23 11];
d1 = [2005 11 23 12 14 1] ;
Ad = datetime(A) ;
d0d = datetime(d0) ;
d1d = datetime(d1) ;
iwant = Ad(Ad>d0d & Ad < d1d)
datevec(iwant)
1 Commento
Jan
il 3 Apr 2017
+1: This uses the modern datetime methods. A simplification:
% Directly instead of datevec(Ad(...))
iwant = A(Ad>d0d & Ad < d1d, :)
Jan
il 3 Apr 2017
Modificato: Andrei Bobrov
il 3 Apr 2017
A = [2004 6 18 13 8 0; ...
2004 7 19 13 45 2; ...
2004 8 18 13 8 13; ...
2004 8 18 13 9 41; ...
2004 9 18 13 9 50; ...
2005 1 20 13 12 38; ...
2005 1 17 13 12 45; ...
2005 2 12 12 12 23; ...
2005 4 12 12 12 24; ...
2005 4 12 12 13 49; ...
2005 12 12 12 13 49; ...
2005 12 12 12 28 20];
D = datenum(A);
Keep = datenum([2004 7 22 13 23 11]) <= D & D <= datenum([2005 11 23 12 14 1]);
B = A(Keep, :);
Categorie
Scopri di più su Dates and Time in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!