Remove rows by time with datenum

3 vues (au cours des 30 derniers jours)
David du Preez
David du Preez le 14 Juil 2017
Modifié(e) : dbmn le 14 Juil 2017
Hi.I have a mx15 matrix. In column 1 are datenum values (datenum(Y,M,D,H,MN,S)). I want to remove rows if the time is earlier than 11:00 or later than 14:00. How would one do that ?

Réponse acceptée

dbmn le 14 Juil 2017
Modifié(e) : dbmn le 14 Juil 2017
assuming that A is your matrix with A(:,1) the column of your datenums, then simply do
% Determine which rows to delete
% (note that the "hours" of datenum are behind the decimal point)
% hence we do mod 1 to just get that number
rows_to_delete = mod(A(:,1),1)<11/24 | mod(A(:,1),1)>14/24;
% Delete them
A(rows_to_delete, :) = [];
Or if you are using a newer version of matlab you could get to some extra comfort and use datetime
% Convert to datetime
new_time = datetime(A(:,1), 'ConvertFrom', 'datenum');
% Determine which rows to delete
rows_to_delete = hour(new_time)<11 | hour(new_time)>14;
% Delete them
A(rows_to_delete, :) = [];

Plus de réponses (0)


En savoir plus sur Dates and Time 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!

Translated by