Simple wild card function for ismember??
Afficher commentaires plus anciens
I have a list of dates and times as string values and (e.g '29/1/2010 20:30:00' etc) and I would like to find all values at a specific time, regardless of day.
Is there a simple wild card function that I can use with ismember to identify these? I have tried:
idx = ismember(Timestamp_str, {'*20:30:00'});
I have also tried regexp, searched the web and help files to no avail.....
Réponse acceptée
Plus de réponses (2)
Andrei Bobrov
le 19 Juil 2011
d1 = datenum(Timestamp_str);
d2 = datenum('00/0/0000 20:30:00');
out = Timestamp_str(abs(rem(d1,1)-d2)<1e6*eps,:)
ADD variant with 'datevec'
dv = datevec(Timestamp_str);
out = Timestamp_str(all(bsxfun(@eq,dv(:,4:6),[20 30 0]),2),:);
adding in answer on the comment Walter's about milliseconds
dv(:,end) = round(dv(:,end));
dv = datevec(datenum(dv));
3 commentaires
Walter Roberson
le 19 Juil 2011
Would it be more robust to datevec() and look at the components ?
Andrei Bobrov
le 19 Juil 2011
Dear Walter! I completely agree with you and thinking about using 'datevec'.
Add variant with 'datevec'
Walter Roberson
le 19 Juil 2011
Though 20:29:59.5 and up to but excluding 20:30:00.5 would probably print out as 20:30:00, so rounding the seconds + milliseconds combination might be called for.
Jan
le 19 Juil 2011
idx = strncmpr(Timestamp_str, '20:30:00', 8);
Catégories
En savoir plus sur Calendar dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!