Scripts, fichiers de commandes

Définitionscript

Un Script est un fichier de commandes MATLAB portant une extension '.m'.

Ce type de fichier est un simple fichier texte, qui comporte des commandes MATLAB, identiques à celles que l'on peut employer directement dans la fenêtre de commandes de MATLAB.

L'avantage évident est que ces commandes sont stockées dans un fichier, il est donc aisé de les rappeler pour les ré-exécuter, même dans une nouvelle session de MATLAB (c'est-à-dire après fermeture et ré-ouverture de MATLAB).

Exemple

%% scriptDemo.m
% Fabien Baillon et Jean-Louis Dirion - Nov.2014
%
% Ceci est un petit script de démonstration
%    qui trace la courbe y = log(2)*x*sin(2x)

a=log(2);
x=0:0.05:1;
y=a*x.*sin(2*x);
plot(x,y);
xlabel('x'); ylabel('y');title('y = ax*sin(2x)');

disp('Tracé de la courbe y = ax*sin(2x) pour a=log(2)')

Méthode

Pour exécuter un script, il suffit de l'appeler par son nom dans la fenêtre de commandes, sans préciser l'extension '.m'. C'est pourquoi, il est conseillé de choisir des noms explicites, permettant une identification rapide de l'utilité des scripts créés.

Exemple

Pour exécuter le script scriptDemo.m, il suffit de l'appeler par son nom, sans extension :

>> scriptDemo
 
Tracé de la courbe y = ax*sin(2x) pour a=log(2)

Méthode

En pratique, pour créer un script MATLAB, vous pouvez utiliser l'éditeur intégré à MATLAB, ou tout autre éditeur de texte.

Il est cependant conseillé d'utiliser des éditeurs dits de code, parce qu'ils aident à la saisie, en indiquant les mots clés reconnus (avec la coloration syntaxique), ou en aidant à respecter les syntaxes.

Par défaut, MATLAB cherche le script appelé dans le répertoire où il se trouve (c'est-à-dire là où il a démarré), puis dans ceux spécifiés dans sa variable d'environnement $PATH.

Complément

La fonction path renvoie la liste des chemins que connaît MATLAB. Lors de l'appel d'un script ou d'une fonction, MATLAB cherchera d'abord s'il existe un fichier de même nom localement, puis parcourra cette liste dans l'ordre, et exécutera le premier fichier rencontré et portant ce nom (même s'il en existe d'autres dans cette arborescence).

La fonction addpath permet d'ajouter un chemin spécifique à cette arborescence.

En général, la fonction addpath est placée dans le fichier /home/mon_nom/matlab/startup.m (ou équivalent selon votre système d'exploitation), qui est exécuté automatiquement au démarrage de MATLAB.

Voici par exemple l'ajout de deux chemins spécifiques où MATLAB peut chercher mes fonctions :

addpath('/usr/local/public/matlab/');
addpath('/home/MyLogin/projets/matlab/');

Ainsi tous les fichiers de commandes présents dans ces deux répertoires seront accessibles de n'importe où.

Il est d'autre part possible de se déplacer dans l'arborescence des fichiers comme sous UNIX ou LINUX, avec la commande cd. La commande UNIX pwd permettant de voir dans quel répertoire l'on se trouve existe également sous MATLAB.

Attention

La façon dont vous devez indiquer les chemins d'accès dépend de votre système d'exploitation. Les exemples donnés correspondent à ce que vous devez écrire sous Linux ou MacOsX... mais sous Windows, vous devriez écrire quelque chose du genre :

addpath('C:\Documents and Settings\MyLogin\projets\matlab\')

Complément

La fonction which permet de savoir quel est le chemin du script ou de la fonction que MATLAB trouve en premier lors du parcours du path.

Par exemple, pour notre scriptDemo.m :

>> which('scriptDemo')
 
    /Users/baillon/Documents/MATLAB/scriptDemo.m

ou pour la fonction prédéfinie sin :

>> which('sin')
 
    built-in (/usr/local/MATLAB/R2019a/toolbox/matlab/elfun/@double/sin) % double method

Vous remarquerez que pour ce dernier exemple, MATLAB précise que c'est une fonction prédéfinie (built-in) : c'est important, parce que si vous créez des scripts ou des fonctions ayant le même nom qu'une fonction prédéfinie, il est fort probable que MATLAB pointera par défaut vers votre version, plutôt que vers la fonction prédéfinie... ce qui peut conduire à des erreurs surprenantes !

Conseil

Ne jamais créer un script ou une fonction ayant le même nom qu'une fonction prédéfinie !

En cas de doute, vérifiez que le nom que vous voulez donner à votre script n'est pas déjà utilisé : pour cela, rechercher l'aide avec help, si elle existe, c'est qu'une fonction de ce nom existe déjà !