• Aucun résultat trouvé

Une chaîne de caractères est toute suite de caractères placés entre guillemets.

N/A
N/A
Protected

Academic year: 2022

Partager "Une chaîne de caractères est toute suite de caractères placés entre guillemets."

Copied!
23
0
0

Texte intégral

(1)

Chapitre 2 Chaînes de caractères, dates et heures

Même si MATLAB est un langage de calcul scientifique de haut niveau et orienté Objet, il offre, de plus, des possibilités de traitement des chaînes de caractères, des dates et heures.

Pour plus de renseignements sur les fonctions MATLAB concernant les chaînes de caractères, vous pouvez consulter l'aide en ligne (help strfun).

I. Les chaînes de caractères

I.1. Généralités

Une chaîne de caractères est toute suite de caractères placés entre guillemets.

>> Chaine = 'MATLAB R2009' Chaine =

MATLAB R2009

Comme pour les polynômes, une chaîne de caractères est considérée par MATLAB comme un vecteur ligne dont on peut calculer la taille, la longueur, la transposer, etc.

N. Martaj, M. Mokhtari, MATLAB R2009, SIMULINK et STATEFLOW pour Ingénieurs, Chercheurs et Etudiants, DOI 10.1007/978-3-642-11764-0_2, © Springer-Verlag Berlin Heidelberg 2010

I. Les chaînes de caractères I.1. Généralités

I.2. Fonctions propres aux chaînes de caractères I.2.1. Conversion de chaînes en nombres I.2.2. Conversion de nombres en chaînes I.2.3. Tests sur les chaînes

I.2.4. Concaténation de chaînes de caractères I.2.5. Opérations sur les chaînes

I.3. Fonctions utiles

I.4. Lecture et écriture des chaînes formatées I.5. Des programmes utiles

I.6. Applications

I.6.1. Cryptage et décryptage d’un message I.6.2. Palindrome

II. Gestion des dates et heures

II.1. Différents formats de dates et heures II.2. Autres fonctions utiles de mesure du temps

(2)

Extraction d’une partie de la chaîne

>> SousChaine=Chaine(8:length(Chaine)) SousChaine =

R2009

La longueur d’une chaîne est égale au nombre des caractères, y compris les blancs (espaces) si elle possède.

Taille

>> size(SousChaine) ans =

1 6

Transposition

>> SousChaine' ans =

R 2 0 0 9

I.2. Fonctions propres aux chaînes de caractères

I.2.1. Conversion de chaînes en nombres

Comme dans les fonctions, on a la possibilité de tester le type des arguments d’entrée, certaines de celles- ci s’appliquent autant aux vecteurs de numériques qu’aux chaînes de caractères, comme la fonction abs qui retourne le module d’un complexe ou le code ascii d’un caractère.

abs

>> abs('MATLAB') ans =

77 65 84 76 65 66

double

Transforme une chaîne en format numérique en double précision.

>> Chaine='MATLAB';

>> Double=double(Chaine) Double =

77 65 84 76 65 66

>> whos

Name Size Bytes Class Attributes Chaine 1x6 12 char

66 Chapitre 2

(3)

Double 1x6 48 double La taille mémoire occupée par la variable Double est 4 fois celle de la chaîne Chaine.

str2double

Transforme le nombre en chaîne sous forme d’un nombre en double précision.

>> Chaine='MATLAB';

>> str2double(Chaine) ans =

NaN

>> Ch1='123';

>> str2double(Ch1) ans =

123

bin2dec

Convertit un nombre binaire sous forme de chaîne en sa valeur décimale.

>> bin2dec('0111') ans =

7

hex2num

Cette fonction fournit une conversion d'un nombre écrit sous forme hexadécimale IEEE (chaîne de caractères) en un flottant double précision.

>> hex2num('400921fb54442d18') ans =

3.1416

>> ans==pi ans = 1

Le résultat est égal à π.

hex2dec

Conversion d'un nombre hexadécimal (écrit sous forme d'une chaîne de caractères) en un nombre entier.

>> hex2dec('F89') ans =

3977

Les chaînes de caractères, dates et heures 67

(4)

I.2.2. Conversion de nombres en chaînes

char

Convertit un tableau d’entiers non négatifs en caractères (les 127 premiers sont les codes ascii de ces caractères).

>> char([77 65 84]) ans =

MAT

>> char([77 65 84 129 206]) ans =

MAT Î

setstr

Réciproquement, connaissant les codes ASCII des caractères d'une chaîne, on peut obtenir la chaîne de caractères correspondante par la fonction setstr.

>> Code=abs('SIMULINK') Code =

83 73 77 85 76 73 78 75

>> setstr(Code) ans =

SIMULINK

num2str

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

>> ch1 = 'MATLAB';

>> Version = 2009;

>> Chaine = [ch1, ' Version ', 'R', num2str(2009),'a']

Chaine =

MATLAB Version R2009a

mat2str

Transforme la matrice numérique en chaîne de caractères.

>> MatString=mat2str([5 4 7; 8 4 2; 6 0 8]) MatString =

[5 4 7;8 4 2;6 0 8]

>> isstr(MatString) ans =

1

>> size(MatString) ans =

68 Chapitre 2

(5)

1 19

Le résultat est bien une seule chaîne de caractères de 19 caractères.

str2num

Effet inverse de la commande num2str. Transforme un nombre vu comme une chaîne en nombre.

>> Ch='1+3.14' Ch =

1+3.14

En transformant la chaîne en nombre, l’opération arithmétique est effectuée.

>> str2num(Ch) ans =

4.1400

>> strcat(strvcat('cos(3.14)','exp(log(2.71))')) ans =

cos(3.14) exp(log(2.71))

>> str2num(ans) ans =

-1.0000 2.7100

int2str

Convertit un entier en chaîne de caractères.

>> int2str([23 56;21 9]) ans =

23 56 21 9

>> isstr(ans) ans =

1

dec2hex

Conversion d'un nombre entier en un nombre hexadécimal donné sous forme d'une chaîne de caractères.

>> dec2hex(77) ans =

4D

dec2bin

Convertit en binaire sous forme d’une chaîne l’entier donné en argument.

Les chaînes de caractères, dates et heures 69

(6)

>> dec2bin(3) ans =

11

>> isstr(ans) ans =

1

I.2.3. Tests sur les chaînes

Retourne 1 si le caractère est un espace et 0 autrement.

>> isspace('Mat lab')

ans =

0 0 0 1 0 0 0 Le 4ème caractère de la chaîne est un espace.

isstr, ischar

Ces 2 commandes retournent 1 si l’argument est une chaîne de caractères et 0 autrement.

>> isstr('MATLAB est un langage de programmation de haut niveau') ans =

1

>> isstr('MATLAB')==ischar('SIMULINK') ans =

1

isletter

Retourne un tableau de 0 et 1 ; 1 pour les lettres de l'alphabet y compris les lettres avec accents, et 0 pour le reste des caractères.

>> Chaine=['è5f87';'çyéfg']

Chaine = è5f87 çyéfg

>> isletter(Chaine) ans =

1 0 1 0 0 1 1 1 1 1

70 Chapitre 2

(7)

I.2.4. Concaténation de chaînes de caractères

Pour concaténer horizontalement des chaînes de caractères, il suffit de les mettre comme des éléments d’un vecteur ligne.

>> ChaineConcat=['MATLAB ' 'est un langage ' 'de haut niveau']

ChaineConcat =

MATLAB est un langage de haut niveau

strcat

Concatène une suite de chaînes données en argument.

>> strcat('MATLAB',' R2009a') ans =

MATLAB R2009a

La concaténation verticale comme éléments d’un vecteur colonne impose que ces chaînes soient de même longueur.

>> strvcat('MATLAB & SIMULINK','R2009a') ans =

MATLAB & SIMULINK R2009a

On doit rajouter des blancs à la chaîne la plus petite.

>> ['MATLAB & SIMULINK';'R2009a ']

ans =

MATLAB & SIMULINK R2009a

>> size(ans) ans =

2 17

strvcat

Concaténation verticale de chaînes de caractères, indépendamment de leurs longueurs.

>> strvcat('MATLAB & SIMULINK','R2009a') ans =

MATLAB R2009a

MATLAB ajoute automatiquement le nombre de blancs nécessaires à la chaîne la plus courte.

Les chaînes de caractères, dates et heures 71

(8)

I.2.5. Opérations sur les chaînes

strcmp

Compare 2 chaînes de caractères données en arguments.

>> TestEgalite=strcmp('MATLAB','matlab') TestEgalite =

0

Les 2 chaînes de caractères ne sont pas identiques.

strncmp

Compare les N premiers caractères de chaînes.

>> Chaine1='MATLAB';

>> Chaine2='MATlab';

>> TestIdentN=strncmp(Chaine1, Chaine2,3) TestIdentN =

1

Les 3 premiers caractères des 2 chaînes sont identiques. Les 4 premiers ne le sont pas à cause de la lettre l qui est une fois en majuscule et une autre en minuscule.

>> TestIdentN=strncmp(Chaine1, Chaine2,4) TestIdentN =

0

strcmpi

Compare les chaînes en ignorant les types majuscule et minuscule.

>> TestIdent=strcmpi('MATLAB','matlab') TestIdent =

1

findstr.

Recherche d’une chaîne dans une autre.

>> Chaine1='TLAB';

>> Chaine2='MATLAB';

>> findstr(Chaine1, Chaine2) ans =

3

La réponse est que la chaîne Chaine1 est à l’intérieur de Chaine2 et qu’elle commence à la 3ème position.

72 Chapitre 2

(9)

On vérifie bien cette chaîne par indexation de la chaîne Chaîne2.

>> Chaine2(1,ans:length(Chaine2)) ans =

TLAB

strfind

Recherche les indices où se trouve une chaîne dans une autre.

>> findstr(Chaine2,'A') ans =

2 5

La chaîne ‘A’ se trouve bien dans la chaîne ‘MATLAB’ aux positions 2 et 5.

upper, lower

Transforme respectivement une chaîne en majuscules et en minuscules.

>> Maj=upper('MATlab') Maj =

MATLAB

>> Minus=lower('MATlab') Minus =

matlab

strrep

Ch = strrep(Ch1,Ch2,Ch3) remplace toutes les occurrences de la chaîne Ch2 dans Ch1 par la chaîne Ch3.

>> Ch=strrep('Ceci est un exemple de niveau moyen','moyen','très bon') Ch =

Ceci est un exemple de niveau très bon

strtrim

Supprime les blancs avant la chaîne.

>> Chaine=' MATLAB R2009 et SIMULINK' Chaine =

MATLAB R2009 et SIMULINK

>> Chaine2=strtrim(Chaine) Chaine2 =

MATLAB R2009 et SIMULINK

>> length(Chaine)

Les chaînes de caractères, dates et heures 73

(10)

ans = 35

>> length(Chaine2) ans =

24

La longueur de la chaîne est passée de 35 à 24 en supprimant les blancs devant la chaîne Chaine.

On se propose, ci-après, de supprimer tous les blancs de la chaîne de caractères. On remplace tous les blancs par un ensemble vide. Malgré le Warning, le résultat est bon.

>> Chaine3= strrep(Chaine,' ',[])

Warning: Inputs must be character arrays or cell arrays of strings.

x =

MATLABetSIMULINK

strtok

Retourne le 1er mot d'une chaîne, ainsi que le reste. Les champs sont séparés par un délimiteur qui est par défaut l'espace.

>> Chaine = 'MATLAB R2009a';

>> [PremierMot, reste] = strtok(Chaine) PremierMot =

MATLAB reste = R2009a

>> enreg = 'Langage de très haut niveau : MATLAB';

>> delimiteur = ':';

>> [nom, reste] = strtok(enreg,delimiteur) nom =

Langage de très haut niveau reste =

: MATLAB

I.3. Fonctions utiles

eval

Evaluation d'une chaîne de caractères contenant des commandes MATLAB, des opérations et des noms de variables. Si la chaîne n'est pas valide une erreur est retournée.

>> x = [2*pi pi/3; pi/2 -1]

x =

6.2832 1.0472 1.5708 -1.0000

74 Chapitre 2

(11)

>> Chaine = 'exp(-det(sin(x)))' Chaine =

exp(-det(sin(x)))

>> eval(Chaine) ans =

2.3774

poly2str

Retourne un polynôme sous forme d’une chaîne de caractères.

>> p=poly2str([1 -2 4],'x') p =

x^2 - 2 x + 4

texlabel

Permet d’afficher les caractères TeX pour des labels dans les graphiques par exemple..

x=-2*pi:pi/10:2*pi;

plot(x, sinc(x))

f1=texlabel('sin(sqrt(lambda^2+gamma^2))/sqrt(lambda^2+gamma^2)');

gtext(f1)

f2=texlabel('angle : -2\pi : 2\pi') xlabel('angle : -2\pi : 2\pi') title('Tracé du sinus cardinal')

-8 -6 -4 -2 0 2 4 6 8

-0.2 0 0.2 0.4 0.6 0.8

1 sin(sqrt(λ2+γ2))/ sqrt(λ2+γ2)

angle : -2π : 2π Tracé du sinus cardinal

Les chaînes de caractères, dates et heures 75

(12)

blanks

Permet de générer une chaîne de caractères formée de blancs. Cette commande est utile dans le cas où l'on a besoin d'un vecteur colonne de chaînes de caractères de même longueur. Les chaînes sont complétées par des blancs jusqu'à ce que la longueur maximale soit atteinte. Nous proposons ci-après un exemple d'application de cette commande.

fichier blancs.m

% chaînes à assembler dans un vecteur colonne Chaine1 = 'MATLAB & SIMULINK';

Chaine2 = 'Version R2009';

n = 2;

% recherche de la longueur maximale for i = 1:n,

LongueurChaine(i) = length(eval(['Chaine', num2str(i)]));

end

% Longueur maximale des chaînes à concaténer LongMax = max(LongueurChaine);

% Concaténation verticale des chaînes équilibrées ConcatChaines = [];

for i = 1:n

Chaine = eval(['Chaine', num2str(i)]); % i-ème chaîne longueurChaine = length(Chaine);

Chaine = [Chaine, blanks(LongMax-longueurChaine)];

ConcatChaines = [ConcatChaines; Chaine];

end

% Affichage des chaînes concaténées ConcatChaines

>> AjoutBlancs ConcatChaines = MATLAB & SIMULINK Version R2009

>> eq(length(ConcatChaines), length('MATLAB & SIMULINK')) ans =

1

MATLAB prévoit la commande str2mat pour effectuer les opérations décrites précédemment.

>> Chaine1=['MATLAB, langage de calcul scientifique de haut niveau'];

>> Chaine2=['& SIMULINK VersionR2009a'];

>> str2mat(Chaine1,Chaine2) ans =

MATLAB, langage de calcul scientifique de haut niveau

& SIMULINK VersionR2009a

76 Chapitre 2

(13)

deblank

Supprime les espaces présents à la fin d'une chaîne de caractères.

>> Chaine = 'MATLAB ' Chaine =

MATLAB

>> size(Chaine) ans =

1 18

I.4. Lecture et écriture de chaînes formatées

sprintf

Le but de cette fonction est l'envoi de sorties formatées dans une chaîne.

[chaîne, msg_erreur] = sprintf(format, data1, data2, ...) La chaîne retournée "chaîne" contient les données des matrices data1, data2, etc. arrangées sous le contrôle de la chaîne de formatage format (dont les instructions sont analogues à celles du langage C).

Si une erreur se produit, un message msg_erreur est généré, sinon une chaîne vide est retournée.

Cette fonction est semblable à la fonction fprintf ; l'écriture est faite sur une chaîne de caractères MATLAB au lieu d'un fichier.

>> x=exp(1) x =

2.7183

>> [Chaine, msg] = sprintf('la valeur du neper vaut : %5.2f',x) Chaine =

la valeur du neper vaut : 2.72 msg =

''

Si x est une matrice, le résultat serait une concaténation des chaînes obtenues par l'application de la fonction sprintf à chacun des éléments de la matrice x.

>> x=randn(2) x =

0.5377 -2.2588 1.8339 0.8622

>> [Chaine, msg] = sprintf('Matrice aléatoire : %5.2f',x) Chaine =

Matrice aléatoire : 0.54Matrice aléatoire : 1.83Matrice aléatoire : -2.26Matrice aléatoire : 0.86

msg = ''

Les chaînes de caractères, dates et heures 77

(14)

La chaîne de format est une chaîne de caractères contenant deux types d'objets : des caractères ordinaires et des spécifications de format. Les caractères ordinaires sont simplement recopiés un à un dans la chaîne résultat.

Chaque spécification de format s'appliquera à l'argument qui lui correspond dans la liste des arguments.

Les spécifications de format ont la forme suivante : d entier décimal signé,

i entier décimal signé, o entier octal non signé, u entier décimal non signé,

x entier hexadécimal non signé (avec a, b, c, d, e et f), X entier hexadécimal non signé (avec A, B, C, D, E et F), f nombre flottant signé de la forme [-] dddd.dddd, e nombre flottant signé de la forme [-] d.dddd e [+/-] ddd,

g nombre flottant signé de type e ou f, suivant la valeur et la précision données. Les zéros et le point décimal ne figurent que s'ils sont nécessaires,

E nombre flottant, comme e, mais l'exposant est la lettre E, G nombre flottant, comme g, mais l'exposant est la lettre E, c caractère simple,

s chaîne de caractères. Affiche les caractères jusqu'à la rencontre d'un caractère nul d'arrêt ou jusqu'à ce que la précision soit atteinte,

% le caractère de pourcentage % est affiché.

sscanf

Cette fonction, dont la syntaxe est décrite ci-après, permet l'extraction d'informations (sous un format particulier) à partir d'une chaîne de caractères.

[a, compteur, msg] = sscanf(chaîne, format, taille) a matrice de données récupérées,

compteur nombre d'éléments lus correctement,

msg message d'erreur dans le cas où une erreur est rencontrée (chaîne vide autrement), chaîne chaîne dans laquelle la lecture est réalisée,

format instructions de formatage analogues à celles du langage C (voir sscanf), taille argument optionnel, pose une limite au nombre d'éléments lus à partir de la chaîne.

Cette fonction est semblable à fscanf ; la lecture est faite à partir d'une chaîne de caractères MATLAB au lieu d'un fichier.

>> Chaine='5 3.5 10' Chaine =

5 3.5 10

>> x = sscanf(Chaine,'%f') x =

5.0000 3.5000 10.0000

78 Chapitre 2

(15)

I.5. Des programmes utiles

Dans cette section, nous proposons au lecteur, des fonctions de traitement de chaînes de caractères qui compléteront celles fournies par MATLAB.

fonction JourDatee.m

function JDate = JourDate(Date)

% extraction des informations jour, mois et Année

% à partir d'une date

% sous forme d'une chaîne de caractères avec les formats

% 'jj-mm-aa' ou 'jj/mm/aa'

% r_date = [Jour Mois Année];

if nargin ~= 1;

error('nombre d''arguments incorrect');

end;

Delim = ['-' '/']; % délimiteurs pour une date [Jour Reste] = strtok(Date,Delim);

[Mois Reste] = strtok(Reste,Delim);

[Annee Reste] = strtok(Reste,Delim);

% conversions chaînes --> nombres Jour = str2num(Jour);

Mois = str2num(Mois);

Annee = str2num(Annee);

% Affichage du jour

[n,j]=weekday(datestr(Date));

JDate = num2str([Jour Mois Annee]);

JDate = [j ' ' JDate];

Quelques exemples d'appel de cette fonction donnent :

>> DateDuRetour=JourDate('31/08/2009') DateDuRetour =

Thu 31 8 2009

>> DateNaissance=JourDate('13/10/1977') DateNaissance =

Thu 13 10 1977

I.6. Applications

I.6.1. Cryptage et décryptage d'un message

On se propose d'écrire un programme permettant de lire un texte, et de l'afficher sous une forme codée, en mettant en œuvre un décalage du jeu de caractères.

Les chaînes de caractères, dates et heures 79

(16)

Le principe de cet exercice est de mettre en évidence l'utilisation de la fonction setstr pour passer des codes ASCII aux caractères composant une chaîne, de leur ajouter ou retrancher une valeur fixe et obtenir ainsi une chaîne codée, donc inintelligible.

fichier Crypt.m

function ChaineCodee = Crypt(Chaine, Code)

% Encryptage d'une chaîne de caractères en utilisant

% le décalage du jeu de caractères.

if nargin <2;

disp('nombre d''arguments incorrect');

help Crypt;

return end;

ChaineCodee = setstr((Chaine+Code));

ChaineCodee =

Phvvdjh#lpsruwdqw#=#wx#grlv#uhyhqlu#oh#64#Drþw

Connaissant la façon dont est crypté le message, le fichier suivant, Decrypt.m permet de revenir au message d’origine.

fonction Decrypt.m

function ChaineDeCodee = Decrypt(Chaine, ValeurCode)

% Décryptage d'une chaîne de caractères en utilisant

% le décalage du jeu de caractères.

% function ChCodee = Decrypt(Chaine, ValDec)

if nargin <2;

disp('nombre d''arguments incorrect');

help Decrypt return;

end;

ChaineDeCodee = setstr(abs(Chaine)-ValeurCode);

>> Message='Phvvdjh#lpsruwdqw#=#wx#grlv#uhyhqlu#oh#64#Drþw';

>> Code=3;

>> ChaineDeCodee=Decrypt(Message,Code) ChaineDeCodee =

Message important : tu dois revenir le 31 Août

I.6.2. Palindrome

Un palindrome est un mot, ou une phrase, lisible indifféremment de la gauche vers la droite ou inversement. On se propose d'écrire un programme qui détermine si une chaîne de caractères est un palindrome.

La solution serait d'inverser la chaîne et de la comparer avec la chaîne d'origine.

80 Chapitre 2

(17)

fichier palindrome.m

function Palind = palindrome(Chaine)

% Indique si une chaîne est un palindrome if nargin <1;

disp('nombre d''arguments incorrect');

help palindrome return;

end;

ChaineRetournee = fliplr(Chaine);

Palind = strcmp(Chaine,ChaineRetournee);

>> palindrome('atta') ans =

1

II. Gestion des dates et heures II.1. 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 commande date retourne la date du jour sous forme d’une chaîne de caractères.

date

>> date ans = 09-Aug-2009

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

now

>> now ans =

7.3399e+005

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.

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.

datestr

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

Les chaînes de caractères, dates et heures 81

(18)

>> datestr(1) ans =

01-Jan-0000

Le nombre correspondant à la date du jour est :

>> floor(now) ans =

733994

>> rem(now,1) ans =

0.5706

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

>> datestr(floor(now)) ans =

09-Aug-2009

>> datestr(rem(now,1)) ans =

5:25 PM

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

>> maintenant=datestr(now) maintenant =

09-Aug-2009 13:45:54

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

>> maintenant=datestr(now,1) maintenant =

09-Aug-2009

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

>> maintenant=datestr(now,2) maintenant =

08/09/09

>> maintenant=datestr(now,14) maintenant =

08:56:53 PM

datenum

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

>> datenum('31-Aug-2009') ans =

734016

82 Chapitre 2

(19)

datevec

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

>> datevec(now) ans =

1.0e+003 *

2.0090 0.0080 0.0090 0.0230 0.0120 0.0401 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.

clock

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

>> clock ans =

1.0e+003 *

2.0090 0.0080 0.0110 0.0020 0.0220 0.0471

>> fix(clock) ans =

2009 8 11 2 22 47

>> datestr(clock) ans =

09-Aug-2009 13:46:05

II.2. Autres fonctions utiles de mesure du temps

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(2009,08) D =

31

calendar

Cette commande affiche le calendrier du mois en cours.

>> calendar

Aug 2009

S M Tu W Th F S 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Les chaînes de caractères, dates et heures 83

(20)

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0 0 0 0 0

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

>> calendar(1977, 10) Oct 1977

S M Tu W Th F S 0 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

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 =

2 w = Mon

La commande suivante montre que le 13 Octobre 1977 était la 5ème journée de la semaine, un jeudi, comme on avait pu le voir dans le calendrier du mois de cette année.

>> [d,w]=weekday('13-Oct-1977') d =

5 w = Thu

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

cputime

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

>> cputime ans = 59.6563

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;

84 Chapitre 2

(21)

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 = 81.4063

Temps mis en secondes : dt =

0.2031

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.3120

tic Initialise le timer.

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.0680

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

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

Les chaînes de caractères, dates et heures 85

(22)

1954 1955 1956 1957 1958 1959 1960 1961 1962 7.5

8 8.5 9

Chronique des années de braise

Population entre le 1er Novembre 1954 et le 5 Juillet 1962

86 Chapitre 2

(23)

http://www.springer.com/978-3-642-11763-3

Références

Documents relatifs

- Ecrire une fonction récursive qui calcule le PGCD de deux entiers positifs. On suppose qu’on ne peut effectuer que

Une pile est représentée par une structure regroupant un entier, pour le sommet, et un tableau de MAX_PILE éléments (ici, des caractères). II.1- En utilisant la

Il faut donc faire défiler le message dans buffer, c'est à dire copier message dans buffer à partir d'une position donnée, afficher son contenu pendant un instant donné

Dans la liste des périodes possibles, on trouve avec une période telle que abcde les périodes bcdea, cdeab, deabc, eabcd ; d’où 10 périodes multiples de 2439, compatibles avec 41

Il est par contre possible de réaliser des conversions : on retiendra que la fonction str permet de convertir un objet en chaine de caractères et les fonctions float et int

[r]

En tout cas, le fait que les groupes de Suzuki soient des groupes de Zassenhauss interviendra d'une manière essentiel- le, comme nous le verrons dans ce qui suit, dans l'obtention des

[r]