La manipulation des dates et des heures représente une part importante des calculs effectués sous MATLAB.

 

Différents formats de dates et heures

MATLAB gère la date sous 3 types de format différents :

  • chaînes de caractères,
  • nombres,
  • vecteurs.

 

La fonction date

La commande date retourne la date du jour sous forme d’une chaîne de caractères.

>> date

ans =

14-Oct-2017

MATLAB gère aussi les dates sous forme de nombres.

 

La fonction now

La commande now retourne la date et l’heure actuelle sous la forme d’un seul nombre dont l’entier inférieur correspond à la date du jour et le reste à l’heure actuelle.

>> now

ans =

7.3698e+05

Le nombre correspond au nombre de jours passés depuis une date de base. Dans MATLAB, cette date de base est le 1er Janvier 2000.

 

La fonction datestr

Transforme une date en nombre sous forme d’une chaîne de caractères.

>> datestr(1)

ans =

01-Jan-0000

 

Le nombre correspondant à la date du jour est :

>> floor(now)

ans =

736982

>> rem(now,1)

ans =

0.6987

La commande rem donne le reste de la division.

 

Pour avoir les chaînes de caractères, nous utilisons la commande datestr.

>> datestr(floor(now))

ans =

14-Oct-2017

>> datestr(rem(now,1))

ans =

4:47 PM

 

Appliquée directement à la commande now, datestr donne l’heure exacte.

>> maintenant=datestr(now)

maintenant =

14-Oct-2017 16:49:57

 

On peut spécifier le type de chaîne pour la date uniquement.

>> maintenant=datestr(now,1)

maintenant =

14-Oct-2017

 

On peut spécifier un nombre entre 0 et 14 pour designer la forme de la date.

>> maintenant=datestr(now,2)

maintenant =

10/14/17

>> maintenant=datestr(now,14)

maintenant =

4:51:14 PM

 

La fonction datenum

Transforme la date sous forme d’une chaîne en date sous forme de nombre.

>> datenum('31-Aug-2017')

ans =

736938

 

La fonction datevec

Cette commande permet de transformer une date en nombre sous forme d’une date en vecteur.

>> datevec(now)

ans =

1.0e+03 *

2.0170 0.0100 0.0140 0.0160 0.0540 0.0066

Ce vecteur contient les informations suivantes : [Année mois jour heure minute second].

Tout comme pour le format nombre, la commande datestr peut donner le format chaîne de caractères.

 

La fonction clock

La commande clock retourne la date et l’heure sous forme d’un vecteur.

>> clock

ans =

1.0e+03 *

2.0170 0.0100 0.0140 0.0160 0.0560 0.0006

>> fix(clock)

ans =

2017 10 14 16 56 9

>> datestr(clock)

ans =

14-Oct-2017 16:56:15

 

Autres fonctions utiles de mesure du temps

 

La fonction eomday

Retourne la date du dernier jour d’un mois d’une année. La commande suivante donne la date du dernier jour du mois d’août 2009.

>> D=eomday(2017,10)

D =

31

 

La fonction calendar

Cette commande affiche le calendrier du mois en cours.

>> calendar
 Oct 2017
 S M Tu W Th F S
 1 2 3 4 5 6 7
 8 9 10 11 12 13 14
 15 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31 0 0 0 0
 0 0 0 0 0 0 0

 

On peut spécifier le mois et l’année sous forme de scalaires.

>> calendar(1944, 12)
 Dec 1944
 S M Tu W Th F S
 0 0 0 0 0 1 2
 3 4 5 6 7 8 9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30
 31 0 0 0 0 0 0

 

La fonction weekday

Cette commande retourne le jour de la semaine en donnant comme argument la date sous forme de chaîne de caractères.

>> [d,w]=weekday(datestr(now))

d =

7

w =

Sat

MATLAB dispose de fonctions de gestion du temps CPU, très utiles pour la gestion des programmes.

 

La fonction cputime

Retourne le temps passé, en secondes, depuis le début de la session MATLAB.

>> cputime

ans =

61.1563

On peut se servir de cette commande pour mesurer le temps d’exécution d’une suite d’instructions.

 

On considère les lignes de commande suivantes qu’on exécute dans l’éditeur.

% Temps passé depuis le début de la session
t1=cputime
x=randn(1000);
moyenne=mean(x(:));
variance=std(x(:))^2;
disp('Temps mis en secondes :')
dt=cputime-t1

 

Nous affichons le temps t1 depuis le début de la session et la durée dt pour l’exécution de cette suite d’instructions.

t1 =

79.2188

Temps mis en secondes :

dt =

0.0781

 

La fonction etime

La commande etim(t2,t1) retourne, en secondes, la différence des temps t2 et t1 spécifiés sous le format vecteurs.

x = rand(1000000, 1);

t = clock; y=exp(log(x.^2));
TempsMis = etime(clock, t)

TempsMis =

0.1880

 

La fonction tic

Initialise le timer.

 

La fonction toc

Stoppe le timer et affiche le temps mis depuis le temps passé en argument.

t1= tic ;
x=randn(1000);
TempsMis=toc(t1)

TempsMis =

0.1855

L’utilisation de ces commandes est plus recommandée que la commande etim pour des raisons de précision.

 

La fonction datetick

Permet d’avoir des abscisses sous forme de dates (années ou mois).

t = (1954:2:1962)';
y = [9 8.8 8.2 7.8 7.5];
plot(datenum(t,1,1),y) % Conversion des années en format nombre
datetick('x','yyyy') % Remplace les ticks de l’axe x par des années à 4 digits
Fonction datetick