Présentation
Matlab est un logiciel de calcul scientifique, dont la base est le calcul matriciel (MATrix LABoratory = MATLAB). C’est un logiciel interactif, où les instructions peuvent être directement tapées en ligne de commande, ou bien sauvées dans un fichier (un script). On peut également utiliser des fonctions (comme en C). Le langage est interprété (pas de compilation des programmes avant exécution), et utilise des bibliothèques de fonctions très nombreuses, ce qui fait de Matlab un outil puissant permettant d’écrire des programmes scientifiques beaucoup plus rapidement qu’avec n’importe quel autre langage traditionnel comme le C.
Ce document est une initiation destinée aux étudiants du cours de traitement numérique du signal en cours commun (ingénieurs 1 et licence 3). L’apprentissage consiste à faire sous Matlab tout ce qui est fait dans ce fascicule d’initiation. Les exercices sont orientés vers le traitement du signal.
Si vous désirez vous perfectionner, un bon nombre des documentations disponibles sur Matlab utilisent les versions 5.x ou antérieures, ce qui suffit amplement pour commencer : citons pour les débutants l’initiation à Matlab d’Hervé Carfantan, visible sur son site http://www.ast.obs-mip.fr/article226.html (et l’une des sources d’inspiration pour ce document), ainsi que le Matlab Primer disponible sur http://math.ucsd. edu/~driver/21d-s99/matlab-primer.html (une recherche sur google avec le mot-clef « Matlab Primer » vous donnera des adresses supplémentaires pour d’autres documents similaires). De nombreuses informations sont disponibles sur le site de The Mathworks (qui développe Matlab) www.mathworks.fr (ou .com pour le site en Anglais) ainsi que des programmes développés par des utilisateurs. On trouve aussi des livres (des vrais livres avec du vrai papier) pour la programmation, les outils graphiques, les applications en communications numériques, … dans les bibliothèques scientifiques. Et bien sûr, ne pas oublier de fureter dans les nombreuses pages d’aide (PDF) qui sont parfois plus prolixes que l’aide en ligne.
A noter : il existe d’autres logiciels de calcul scientifique dont le fonctionnement est proche de Matlab (ligne de commande, langage interprété, syntaxe simple, bibliothèques de fonctions), qui eux sont distribués gratuitement : Octave, sous licence GNU http://www.octave.org, qui d’un point de vue syntaxe est le plus proche de Matlab, et Scilab, distribué par un consortium lié à l’INRIA http://www.scilab.org.
Démarrage et répertoire de travail
Matlab est un langage interprété, c’est-à-dire que les instructions n’ont pas besoin d’être compilées préalablement, elles sont lues et interprétées directement par le logiciel. Après avoir lancé Matlab (double-cliquer sur l’icône Matlab), une fenêtre graphique apparaît. Elle est composée d’une barre de menu et de plusieurs fenêtres : − une fenêtre de commande (command window) − une fenêtre d’historique des commandes (command history) − une fenêtre listant les variables présentes dans l’espace de travail (workspace) Command window Les instructions sont tapées dans la fenêtre de commande, dès que le prompt » apparaît. Toute commande tapée est alors interprétée dès que la touche « Entrée » (ou « Enter ») a été frappée. Command history Les instructions tapées dans la fenêtre de commande sont stockées en mémoire et affichées dans l a fenêtre d’historique des commandes. On peut ainsi parcourir les commandes précédemment évaluées. Lorsque l’on quitte la session Matlab, les commandes stockées en mémoire sont sauvées dans un fichier d’historique. Workspace L’espace de travail est la mémoire vive de la session. Toutes les variables définies dans la fenêtre de commande (ou définies lors de l’évaluation d’instructions dans des fichiers de scripts, voir les paragraphes 0 ou A.10) sont en mémoire dans l’espace de travail. On peut visualiser leur nom, taille, nombre d’octets (Bytes) et classe (réel, entier, caractère, variable logique…) dans la fenêtre Workspace. Quand on quitte la session, les variables stockées en mémoire dans l’espace de travail sont perdues.
Répertoire de travail Le répertoire par défaut est en général c:\matlab\work. Il faut donc changer de répertoire de travail, pour mettre ses fichiers dans un répertoire personnel. On suppose qu’il existe un disque D. Créons un répertoire de travail TP_Matlab sur le disque D :
» cd d: » mkdir TP_Matlab » cd TP_Matlab
Un autre moyen de faire est d’utiliser la barre de menu, et de changer le Current directory en cliquant sur les trois petits points .
Créer ainsi un répertoire Donnees dans votre répertoire TP_Matlab.
Le répertoire dans lequel on se trouve est indiqué à côté de Current directory. On peut également utiliser la commande pwd (print working directory), et pour lister les fichiers dans le répertoire, la commande dir :
» pwd ans =
D:\TP_Matlab
» dir
. .. Donnees
Si l’on utilise des fichiers qui sont dans le répertoire TP_Matlab à partir de la fenêtre de commande, pas de problème : Matlab trouve les fichiers qui sont dans le répertoire de travail courant. En revanche, si l’on veut utiliser d’autres fichiers situés dans d’autres répertoires, par exemple dans Donnees qui est un sous-répertoire du répertoire courant, il faut rajouter le chemin d’accès pour que Matlab puisse les trouver. Dans la barre de menu, l’onglet File / Set Path permet d’ajouter des répertoires (éventuellement avec leurs sous-répertoires) dans la liste des chemins existants. Ajouter le répertoire Donnees dans la liste des chemins.
Interpréter une ligne de commande
Comme on vient de l’expérimenter, les instructions sont interprétées dès qu’on a tapé sur « Entrée ». On peut ainsi faire afficher l’aide en ligne générale, via help, qui liste les fonctions disponibles, par thème.
» help
HELP topics:
matlab\general – General purpose commands. matlab\ops – Operators and special characters. matlab\lang – Programming language constructs. matlab\elmat – Elementary matrices and matrix manipulation. matlab\elfun – Elementary math functions. matlab\specfun – Specialized math functions. matlab\matfun – Matrix functions – numerical linear algebra. matlab\datafun – Data analysis and Fourier transforms. matlab\polyfun – Interpolation and polynomials. matlab\funfun – Function functions and ODE solvers. … …
Essayons quelques opérations très élémentaires…
» 4+9 ans = 13
» 8/3 ans = 2.6667
» 9^4 ans = 6561
ans est une variable par défaut interne à Matlab dans laquelle est stockée la dernière réponse (answer) obtenue. Pour voir le contenu de ans :
» ans ans =6561
La majorité des fonctions et constantes mathématiques usuelles sont disponibles.
» help pi
PI 3.1415926535897…. PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897….
» 2*sin(pi/3) ans = 1.7321
» pi ans = 3.1416
» exp(-sqrt(2)) ans =0.2431
Aide en ligne (help)
La fonction d’aide mentionnée tout au long de ce document est le help, qui renseigne à la fois sur les différentes rubriques et sur les fonctions elles-mêmes. On peut également passer par le menu (Help / MATLAB Help). Si l’on veut des infos sur une rubrique particulière, par exemple elfun, on tape help elfun.
» help elfun
Elementary math functions. Trigonometric. sin – Sine. sinh – Hyperbolic sine. asin – Inverse sine. asinh – Inverse hyperbolic sine. cos – Cosine. cosh – Hyperbolic cosine. acos – Inverse cosine. acosh – Inverse hyperbolic cosine. tan – Tangent. … … ou sur une fonction particulière : help tan.
» help tan
TAN Tangent. TAN(X) is the tangent of the elements of X. See also ATAN, ATAN2.
Lorsque l’on cherche des informations sur une fonction, il faut toujours 1. Commencer par utiliser l’aide en ligne de commande 2. Lire à partir du début (remonter si besoin avec l’ascenseur) pour l’utilisation standard 3. Utiliser l’aide HTML (onglet Help / Matlab Help de la barre de menu) si l’on désire plus de détails
Variables et espace de travail
Dans Matlab, toute variable est une matrice de dimensions m x n, avec m lignes, n colonnes, m, n ≥ 1 – scalaire 1 x 1 – vecteur ligne 1 x n – vecteur colonne m x 1 – matrice m x n Un nom de variable doit respecter les règles suivantes : – commencer par une lettre (a-z ou A-Z) – avoir au plus 63 caractères – ne contenir ni blancs, ni caractères de ponctuation, ni caractères accentués, ni opérateurs arithmétiques (−, +, …), … Matlab fait la différence entre les majuscules et les minuscules. » r=2 r = 2 » diametre=2*r diametre =