Une chaîne de caractères est considérée par MATLAB comme un vecteur ligne dont le nombre d’éléments est le nombre de ses caractères représentés par leur code ASCII. Ainsi, pour déclarer une chaîne de caractères, vous devez placer le texte entre deux guillemets simple.

>> ch = 'matlab'
ch =
matlab

 

Généralité sur les chaînes de caractères

Les dimensions de la chaîne de caractères sont données par la commande size.

>> [n, m] = size(ch)
n =
1
m =
6

Ainsi la chaine de ‘matlab’ est considérée comme une matrice à une ligne et six colonnes ou plus simplement comme un vecteur ligne de taille 6.

 

La commande length qui permet d’obtenir la taille d’un vecteur ou la plus grande dimension d’une matrice, est applicable aux chaines de caractères dont elle retourne la longueur.

>> length(ch)
ans =
6

 

Comme pour les vecteurs, sa transposition devient une chaîne verticale de même longueur.

>> ch'
ans =
m
a
t
l
a
b

 

Vous pouvez extraire une partie de la chaîne de caractères précédente par la commande suivante:

cch = cch (length(cch )-6:end)

cch =

matlab

 

Fonctions propres aux chaînes de caractères

Conversions de chaînes de caractères en nombres

Vous pouvez convertir des chaines de caractères en valeurs numériques avec les fonctions suivantes:

 

La fonction abs

Elle retourne le module d’un complexe ou le code ascii d’un caractère.

>> abs('MATLAB')

ans =

77 65 84 76 65 66

 

La fonction double

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

>> double('MATLAB')

ans =

77 65 84 76 65 66

 

La fonction str2double

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

>> str2double('MATLAB')

ans =

NaN

>> str2double('1234')

ans =

1234

 

La fonction bin2dec

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

>> bin2dec('0111')

ans =

7

 

La fonction hex2num

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

>> hex2num('400921fb54442d18')

ans =

3.1416

>> ans == pi

ans =

1

Le résultat est égal à π.

 

La fonction 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

 

Conversion de nombres en chaînes de caractères

Vous pouvez convertir des valeurs numériques en chaines de caractères avec les fonctions suivantes:

 

La fonction 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Î

 

La fonction 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

 

La fonction num2str

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

ch1 = 'MATLAB';
Version = 2014;
Chaine = [ch1, ' Version ', 'R', num2str(Version),'a']

Chaine =

MATLAB Version R2014a

 

La fonction 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 =

1 19

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

 

La fonction 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

 

La fonction int2str

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

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

ans =

23 56
21 9

>> isstr(ans)

ans =

1

 

La fonction 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

 

La fonction dec2bin

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

>> dec2bin(3)

ans =

11

>> isstr(ans)

ans =

1

 

Tests sur les chaînes

La fonction isspace

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.

 

Les fonctions isstr et 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

 

La fonction 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

 

Concaténation de chaîne de caractères

On peut concaténer plusieurs chaines de caractères en les écrivant comme des éléments d’un vecteur.

>> cch = ['langage ' ch]

cch =

langage matlab

 

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

ChaineConcat =

MATLAB est un langage de haut niveau

 

La fonction strcat

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

>> strcat('MATLAB',' R2014a')

ans =

MATLAB R2014a

 

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

>> strvcat('MATLAB & SIMULINK','R2014a')

ans =

MATLAB & SIMULINK
R2014a

>> size(ans)

ans =

2 17

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

 

Opérations sur les chaînes

La fonction strcmp

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

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

TestEgalite =

0

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

TestEgalite =

1

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

 

La fonction strncmp

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

>> TestIdentN=strncmp('MATLAB', 'MATlab',3)

TestIdentN =

1

>> TestIdentN=strncmp('MATLAB', 'MATlab',4)

TestIdentN =

0

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.

 

La fonction strcmpi

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

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

TestIdent =

1

 

La fonction 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.

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

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

ans =

TLAB

 

La fonction 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.

 

Les fonction upper, lower

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

>> Maj=upper('MATlab')

Maj =

MATLAB

>> Minus=lower('MATlab')

Minus =

matlab

 

La fonction 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

 

La fonction 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)

ans =

34

>> length(Chaine2)

ans =

24

La longueur de la chaîne est passée de 34 à 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.

Chaine3 =

MATLABR2009etSIMULINK

 

La fonction 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

 

Fonctions utiles

La fonction eval

Évaluation 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

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

Chaine =

exp(-det(sin(x)))

>> eval(Chaine)

ans =

2.3774

 

La fonction 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

 

La fonction 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)
xlabel('angle : -2\pi : 2\pi')
title('Tracé du sinus cardinal')
Fonction textlabel et gtext

 

La fonction 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.

>> chaine = ['MATLAB', blanks(5), '2016a']

chaine =

MATLAB     2016a

 

La fonction deblank

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

>> Chaine = 'MATLAB                 '

Chaine =

MATLAB                 

>> size(Chaine)

ans =

1 23

>> Chaine2 = deblank(Chaine)

Chaine2 =

MATLAB

>> size(Chaine2)

ans =

1 6