Variables:
Un programme informatique manipule les données à l’aide des variables. Sous MATLAB, la déclaration des variables n’est pas nécessaire. Rappelons qu'une variable est constituée d’un nom symbolique associé à une valeur. Lorsque MATLAB trouve une nouvelle variable, il la crée et lui alloue un espace mémoire approprié. Si la variable existe déjà, son contenu est remplacé et un nouvel espace mémoire lui est de nouveau alloué.
Exemple :
Pour créer la variable n, et lui allouer la valeur 3, on tapera :
>> n = 3
La fenêtre de commandes affichera :
n =
3
Cette commande crée une matrice 1 ligne, 1 colonne appelée n, puis stocke la valeur 3 dans la variable crée.
Attention! MATLAB est sensible à la casse, c'est-à-dire qu’il fait la distinction entre les majuscules et les minuscules. Ainsi N et n sont deux variables distinctes. La nouvelle variable crée apparaît dans la fenêtre de travail (Workspace) et la commande que l’on vient de saisir est enregistrée dans l'Historique des commandes (Command History).
Autre exemple: créer la variable a ayant pour valeur 7 :
>> a = 7 ;
Comme cela a été dit dans le chapitre précédent, le « ; » à la fin de la ligne de commande indique qu’on ne souhaite pas afficher le résultat de la commande. Mais la variable a est crée dans le "Workspace".
A partir de là, on peut effectuer des opérations :
>> n*a
Donnera:
ans = 21
Dans la fenêtre des commandes, on peut rappeler les commandes mémorisées dans l’historique des commandes avec les flèches de défilement haut et bas du clavier.
On peut aussi créer une variable et lui assigner directement le résultat d’une opération.
Exemple :
>> x = sqrt(25) % calcule la racine carrée de 25
Donnera :
x = 5
On peut faire des assignements de plusieurs variables sur une seule ligne. Par exemple, au lieu d’écrire :
>> a = 8 ;
>> b = 3 ;
>> c = a * b
Sachant qu’on obtient :
c = 24
On peut aussi écrire :
>> a = 8 ; b = 3 ;
>> c = a * b
Et on obtiendra le même résultat.
Types de données dans MATLAB
Tout type de données est stocké dans MATLAB sous forme de matrice, dont la dimension peut varier de 0 ligne × 0 colonne, à n lignes × m colonnes ; n et m pouvant être très grands.
Le tableau ci-après regroupe quelques types de données couramment rencontrés sous MATLAB :
Type de donnée |
Description |
|
int8 |
Entier 8 bits signé |
|
uint8 |
Entier 8 bits non signé |
|
int16 |
Entier 16 bits signé |
|
uint16 |
Entier 16 bits non signé |
|
int32 |
Entier 32 bits signé |
|
uint32 |
Entier 32 bits non signé |
|
int64 |
Entier 64 bits signé |
|
uint64 |
Entier 64 bits non signé |
|
single |
Nombre numérique en simple précision |
|
double |
Nombre numérique en double précision |
|
logical |
Valeur booléenne 0 ou 1 (FAUX ou VRAI) |
|
char |
Caractères (les chaînes sont stockées sous forme de tableau de caractères) |
|
cell array |
Tableau indexé capable de stoker des données de différents types |
|
structure |
Ce sont des structures comme celles définies dans le langage C |
|
function handle |
Pointeur vers une fonction |
|
user class |
Objet construit à partir d’une classe définie |
|
java classes |
Objet construit à partir d’une classe Java |
Par défaut, MATLAB stocke les données numériques dans un format double précision (double) ; il peut être nécessaire de faire des conversions sur les données avant de les stocker.
Exemple :
On veut stocker dans la variable x la valeur 265 sous forme d’un entier 16 bits signé ; on aura la commande :
>> x = int16(265)
x = 265
La variable
>> a = 349,751 ;
Codé comme un entier signé sur 16 bits donnera :
>> int16(a)
ans = 349
Les conversions de types
Les types de donnés vus précédemment peuvent être convertis en types différents de celui dans lequel ils ont été crées au départ.
Le tableau ci-après donne quelques fonctions prédéfinies MATLAB de conversions de types:
Fonction |
Rôle |
char |
Converti un caractère en une chaîne |
int2str |
Converti un nombre entier en chaîne de carctères |
mat2str |
Converti une matrice en chaîne de caractère |
num2str |
Converti un nombre en une chaîne de caractères |
str2double |
Converti une chaîne en nombre double précision |
str2num |
Converti une chaîne de caractères en nombre |
native2unicode |
Converti des octets numériques en caractères unicode |
unicode2native |
Converti des caractères unicodes en octets numériques |
base2dec |
Converti un nombre chaîne en base N en un nombre décimal |
bin2dec |
Converti un nombre binaire en décimal |
dec2base |
Converti un nombre décimal en une chaîne de caractères de base N |
dec2bin |
Converti un nombre décimal en binaire |
dec2hex |
Converti un nombre décimal en hexadécimal |
hex2dec |
Converti un nombre hexadécimal en décimal |
hex2num |
Converti un nombre sous forme de chaîne de caractères hexadécimal en un nombre décimal double précision |
num2hex |
Converti des nombres simple et double précision en chaîne de caractères hexadécimale |
cell2mat |
Converti un tableau cellules en un tableau de numériques |
cell2struct |
Converti un tableau cellules et tableau de structures |
cell2str |
Crée un tableau de chaînes à partir d’une chaîne de caractères |
mat2cell |
Converti un tableau en tableau cell pouvant avoir une taille différente |
num2cell |
Converti un tableau en un tableau cell |
struct2cell |
Converti une structure en un tableau de cellules |
Exemple de conversion :
La fonction prédéfinie disp() permet d’afficher des chaînes de caractères. On veut par exemple afficher la phrase suivante « Yoda aura 800 ans cette année », on peut procéder de la façon suivante :
>> nom = 'Yoda' ; age = 800 ;
>> P = [nom, 'aura', num2str(age), 'ans', 'cette année'] ;
>> disp(P)
Affichera
Yoda aura 800 ans cette année
Autre exemple :
>> hex2dec('2B9')
Donnera :
ans = 697
Identification du type de données
MATLAB propose un ensemble de fonctions variées pour identifier le type de variables; quelques unes sont données dans le tableau ci-après :
Fonction |
Description |
ischar |
Pour savoir si la variable est un tableau de caractères |
isfloat |
Pour savoir si la variable est tableau de nombres en virgules flottante |
isinteger |
Pour savoir si la variable est un tableau de nombres entiers |
isnumeric |
Pour savoir si la variable est un tableau de nombres numériques |
isreal |
Pour savoir si la variable est un tableau de nombres reels |
isstr |
Pour savoir si la variable est un tableau de caractères |
whos |
Donne la liste de toutes les variables qui sont dans la fenêtre de travail, leur taille et leur type |
Exemple :
>> a = 9 ;
>> ischar(a)
ans =
0
Dans cet exemple, a n’est pas un caractère ; donc le résultat est « faux » soit 0.
>> isfloat(a)
ans =
1
On a un résultat du test VRAI car le nombre numérique a peut s’écrire en virgule flottante.