You are on page 1of 36

Florence Nicol

Unité de Neurosciences Cognitives


Université Catholique de Louvain
Louvain-la-Neuve, Belgique
florence.nicol@psp.ucl.ac.be
15 Septembre 2004

F.Nicol – M Files - 1
• Fichier d’instructions :

» Enregistrer une séquence d’instructions (programme) dans un fichier M


(extension « .m ») et les faire exécuter par Matlab en appelant une seule
commande associée au programme

• Deux types de fichiers M :

» Le fichier de scripts : exécuter simplement une suite d’instructions


» Le fichier de fonctions : peut prendre des arguments à l’entrée (inputs) et
produit un résultat (outputs)

Fonction : instructions agissant


INPUTS sur les INPUTS OUTPUTS

Met en relation des variables d’entrés (INPUTS)


et des variables de sortie (OUTPUTS)

Ex : x fonction sinus sinus(x)


F.Nicol – M Files - 2
• Scripts : exécuter simplement une suite d’instructions
– Le gâteau au chocolat :
4 œufs, 40g de farine, 200g de chocolat, 100g de beurre, 100g de sucre
préchauffer le four à 180°C
faire fondre le chocolat
ajouter le beurre au chocolat
battre les œufs avec le sucre
incorporer la farine recette
mélanger avec le mélange précédent
verser dans un moule
mettre au four 30mn

• Fonction : peut prendre des arguments à l’entrée (inputs) et produit un résultat


(outputs)
– La recette d’une pâtisserie
Inputs (ingrédients) : œufs, sucre, farine, chocolat, beurre
Fonction : function gâteau = recette(œufs, sucre, beurre, farine, chocolat)
Outputs : une pâtisserie

On obtient le gâteau au chocolat précédent si les inputs spécifiés par l’utilisateur sont :
4 œufs, 40g de farine, 200g de chocolat, 100g de beurre, 100g de sucre

F.Nicol – M Files - 3
• Fichier M :
» généralement un fichier texte créé dans un éditeur de texte

• Editeur de texte sous Matlab :


» Menu File>New>M-File
» Commande edit :
edit : ouvre l’éditeur de texte
edit nomfich : ouvre le fichier nomfich.m dans l’éditeur de texte
Ex : edit mean

• Autres commandes utiles :


» Commande what :
liste des noms des fichiers du répertoire courant
» Commande type :
type nomfich.m : affiche dans la fenêtre de commandes le contenu
du fichier nomfich.m
Ex : type mean

F.Nicol – M Files - 4
• Fichier de scripts :
» Forme la plus simple d’un fichier M : ensemble d’instructions Matlab qui joue le rôle de
programme principal
» Instructions enregistrées dans un fichier M nomscript.m
» Crée ou opère sur des données de l’espace de travail

• Structure de base d’un script :


%lignes d’aide
séquence d’instructions

• Exécution d’un script :


» Dans l’éditeur de texte : Menu Debug>Run ou l’icône

» Taper nomscript dans la fenêtre de commande ou le programme appelant

• Utilité d’un script:


» Automatiser un ensemble d’instructions à exécuter plusieurs fois
» Modifier un ensemble d’instructions dans un éditeur de texte

F.Nicol – M Files - 5
• Exemple 1 : dans le répertoire de travail, fichier scriptsinus.m

Ecrire un script traçant le plot de la fonction sinus pour un intervalle


allant de 0 à 2pi avec un pas de pi/100 (201 valeurs)

%SINUS : plot de la fonction sinus sur l'intervalle x=0:pi/100:2*pi

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y);
title('sinus');

Appel du script :

dans la fenêtre de commande, taper scriptsinus

F.Nicol – M Files - 6
• Exemple 2 : dans le répertoire de travail, fichier scriptplot.m
%ligne H1 : visualiser une suite d’images de coupes de cerveau dans la même fenêtre graphique
%images provenant du fichier mri
%définir la première et la dernière coupe en initialisant les variables image_start et image_end
%définir le nombre de plots dans la fenêtre graphique en initialisant les variables nbl et nbcol

load mri; %charger les données


D = squeeze(D);
image_start = 4; %première image
image_end = 18; %dernière image
image_num = image_start; %initialisation du compteur d’images
nbl = 3; %nombre de lignes et de colonnes dans la fenêtre graphique
nbcol = 5;
hold on;
while image_num <= image_end %tant que le compteur n’atteint pas la dernière image

subplot(nbl,nbcol,image_num-image_start+1); %tracer l’image de la coupe de cerveau


image(D(:,:,image_num));
title(['Slice ', num2str(image_num)]);
axis image;
axis off;
colormap(map);
image_num = image_num+1; %incrémenter le compteur d’image
end
hold off;

Appel du script : dans la fenêtre de commande, taper scriptplot


F.Nicol – M Files - 7
• Fichiers de fonctions :
» Définir des fonctions utilisateur : créer des fonctions qui ne figurent pas parmi les
fonctions Matlab intégrées
» Programmation d’applications
» Peut prendre des arguments à l’entrée (inputs) et retourne des arguments à la
sortie (outputs)

Nom de la
• Définition d’une fonction : fonction
OUTPUT INPUT

function vars = nomfonc(vare)

mot-clé
séquence d’instructions Corps de la fonction

vars = variable de sortie de la fonction (input)


vare = variable d’entrée de la fonction (output)
nomfonc = nom de la fonction
séquence d’instructions = corps de la fonction

F.Nicol – M Files - 8
• Structure de base :

1. Définition de la fonction : une ligne qui définit le nom de la fonction, le


nombre et l’ordre des inputs et des outputs.
2. La ligne H1 : première ligne d’aide « help1 » recherchée quand on utilise
la commande look for. Cette ligne commence par le caractère %.
3. Le texte d’aide : texte d’aide affiché à la suite de la ligne H1 quand on
utilise la commande help. Chaque ligne du texte commence par le
caractère %.
4. Le corps de la fonction : contient le code qui exécute les calculs et
assigne des valeurs aux arguments outputs.
5. Les commentaires : une ligne de commentaires commence
impérativement par le caractère % et peut apparaître à n’importe quel
endroit dans le fichier.

• Remarque :
» Le texte d’aide est suivi d’une ligne vide ou d’une instruction exécutable
(ne commençant pas par le caractère %)

F.Nicol – M Files - 9
• Sauvegarder une fonction :
» Enregistrer impérativement la fonction dans le fichier nomfonc.m
» Le fichier M doit porter le nom de la fonction qu’il appelle

• Exécuter une fonction :

– Appeler la fonction par son nom nomfonc :


» Affecter une valeur à la variable d’entrée inp
» Taper nomfonc(inp) dans la fenêtre de commande
retourne le résultat dans la fenêtre de commande
» Taper out=nomfonc(inp)
sauvegarde le résultat dans une variable out

– Remarque :
» on peut aussi entrer directement les valeurs de l’input dans la fonction
Ex : taper nomfonc(3) est équivalent à inp=3;
nomfonc(inp);

• Fin de la fonction :
» pas de mot-clé
» la fonction est supposée se terminer à la fin du fichier

• Commande return
» provoquer un retour au programme appelant

F.Nicol – M Files - 10
• Exemple 1 : construire une fonction qui calcule la somme des éléments d’un vecteur
dans le répertoire de travail : fichier somme.m

function s = somme(x)
%SOMME : calcule la somme des éléments du vecteur x
%Input : le vecteur d’éléments x
%Output : la somme des éléments s

n = length(x); %longueur du vecteur x


s=0; %initialiser la somme
for i=1:n
s=s+x(i);
end

Appel de la fonction :

x = 1:10; %le nom de la variable d’entrée n’est pas


%nécessairement celui utilisé dans la fonction
somme(x) %afficher le résultat dans la fenêtre de commande
ou
somme(1:10) %on peut directement entrer les valeurs de l’input

som=somme(x); %sauvegarder le résultat dans l’espace de travail

F.Nicol – M Files - 11
• Définition d’une fonction : multiples inputs/outputs
Nom de la
fonction
OUTPUTS INPUTS

function [vars1, …, varsm] = nomfonc(vare1, …, varen)

mot-clé séquence d’instructions Corps de la fonction

vars1, …, varsm = variables de sortie de la fonction (inputs)


vare1, …, varen = variables d’entrée de la fonction (outputs)
nomfonc = nom de la fonction
séquence d’instructions = corps de la fonction

• Définition d’une fonction : pas d’outputs


function nomfonc(vare1, …, varen)
function [ ] = nomfonc(vare1, …, varen)

F.Nicol – M Files - 12
• Exécuter une fonction : multiples outputs
function [vars1, …, varsm] = nomfonc(vare1, …, varen)

– Affecter une valeur aux variables inputs inp1, …, inpn


– Quand la fonction retourne plus d’un output :

[out1, …, outm] = nomfonc(inp1,…,inpn)

» retourne dans les variables out1, …, outm les valeurs des outputs

[out1, …, outk] = nomfonc(inp1,…,inpn)

» retourne dans les variables out1, …, outk les k premiers outputs

nomfonc(inp1,…,inpn)

» retourne uniquement le premier output


• Remarque :
– L’ordre d’appel des arguments input et output est important !
– Ranger les variables de sortie (outputs) par ordre d’importance

F.Nicol – M Files - 13
• Exemple 1 : dans le répertoire de travail, fichier sliceplot.m (pas d’ouputs)
function sliceplot(image_start,image_end,nbl,nbcol)
%ligne H1 : visualiser une suite d’images de coupes de cerveau dans la même fenêtre graphique
%images provenant du fichier mri
%argulents inputs : la première et la dernière coupe en initialisant les variables image_start et image_end
%arguments inputs : le nombre de plots dans la fenêtre graphique en initialisant les variables nbl et nbcol

load mri; %charger les données


D = squeeze(D);
image_num = image_start; %initialisation du compteur d’images
hold on;
while image_num <= image_end %tant que le compteur n’atteint pas la dernière image

subplot(nbl,nbcol,image_num-image_start+1); %tracer l’image de la coupe de cerveau


image(D(:,:,image_num));
title(['Slice ', num2str(image_num)]);
axis image;
axis off;
colormap(map);
image_num = image_num+1; %incrémenter le compteur d’image
end
hold off;

Appel de la fonction : image_start = 4; image_end = 18; nbl = 3; nbcol = 5;


sliceplot(image_start,image_end,nbl,nbcol)
ou
sliceplot(4, 18, 3, 5)

F.Nicol – M Files - 14
• Exemple 2 : 3 inputs, 1 output

dans le répertoire de travail, fichier max3.m

function G=max3(A,B,C)
%ligne H1 : calculer le plus grand de trois nombres
%arguments inputs : les trois nombres à comparer A, B et C
%arguments outputs : le plus grand des trois nombres G

if A>B %comparer les deux premiers nombres A et B


G = A;
else
G = B;
end
if C>G %comparer avec le troisième nombre C
G = C;
end

Appel de la fonction :
max3(5, -1, 10)
ou
A = 5; B = -1; C = 10;
max3(A, B, C)

F.Nicol – M Files - 15
• Exemple 4 : 3 inputs, 3 ouputs
dans le répertoire de travail, fichier maxmin3.m
function [min, max,dist]=maxmin3(A,B,C)
%ligne H1 : calculer le plus grand et le plus petit de trois nombres
%arguments inputs : les trois nombres à comparer A, B et C
%arguments outputs : le plus grand et le plus petit des trois nombres, l’étendue en les deux

if A>B %comparer les deux premiers nombres A et B


max = A;
min = B;
else
max = B;
min = A;
end
if C>max %comparer avec le troisième nombre C
max = C;
elseif C<min
min = C;
end
dist = abs(max-min);

Appel de la fonction :
maxmin3(5, -1, 10) renvoie le premier output (le min)
[m, n] = maxmin3(5, -1, 10) renvoie les deux premiers outputs (les min et max)
[m, n, d] = maxmin3(5, -1, 10) renvoie les 3 outputs (les min, max et l’étendue)

F.Nicol – M Files - 16
• Fichier M et sous fonctions :
– un fichier M peut contenir le code de plusieurs fonctions :
» la première fonction du fichier sera la fonction principale i.e. la fonction
appelée par le fichier M
» les fonctions suivantes sont les sous fonctions appelées par la fonction
principale

• Remarque :
– l’ordre d’apparition des sous fonctions est indifférent du moment que la fonction
principale apparaît en premier
– Matlab contrôle si une fonction est (par ordre de priorité) :
1. une sous fonction
2. une fonction privée (cf. section suivante)
3. une fonction standard du « search path »

On peut donc utiliser une sous fonction du même nom qu’une fonction standard : elle sera
d’abord reconnue comme une sous fonction du fichier M plutôt qu’une fonction standard du
même nom implémentée dans le « search path »

F.Nicol – M Files - 17
• Exemple : fichier newstats.m
function [avg, med] = newstats(u) %fonction principale
%NEWSTATS calcule la moyenne et la médiane en utilisant des sous fonctions

n = length(u);
avg = mean(u,n); %appel de la sous fonction mean
med = median(u,n); %appel de la sous fonction median

function a = mean(v,n) %sous fonction


%calcule la moyenne du vecteur v de longueur n
a = sum(v)/n;

function m = median(v,n) %sous fonction


%calcule la médiane du vecteur v de longueur n
w = sort(v);
if rem(n,2) == 1
m = w((n+1)/2);
else
m = (w(n/2)+w(n/2+1))/2;
end

Matlab reconnaît la fonction mean comme étant la sous fonction du fichier M newstats.m plutôt
que la fonction standard implémentée dans le « search path »

Ex : x = 0:10;
[moy,med] = newstats(x.^2)

F.Nicol – M Files - 18
• Fonction privée :

– Fonction se trouvant dans un sous répertoire appelé « private »


– Accessible seulement pour les fonctions contenues dans le répertoire parent
– Ex : dans le répertoire newmath, le sous répertoire private contient des fonctions
que seules les fonctions du répertoire newmath peuvent appeler
– Avantages :

• Utiliser le même nom que celui de fonctions utilisées dans d’autres répertoires
• Créer sa version d’une fonction en gardant l’original dans un autre répertoire
• Matlab cherche en priorité les fonctions privées avant les fonctions standard
• Attention, ne pas placer un sous répertoire private dans le « search path »

• Remarque :

– Si le répertoire newmath se trouve dans le « search path », les fonctions de ce


répertoire sont accessibles sauf celles contenues dans le sous répertoire private :
» Les fonctions du sous répertoire private sont uniquement accessibles aux fonctions du
répertoire parent

F.Nicol – M Files - 19
• Exemple : faire la somme des éléments des colonnes d’une matrice (Exercice 5)
1) dans le répertoire newmath, fichier somcol.m

function s=somcol(A)
%SOMCOL : Somme des éléments des colonnes d’une matrice A

taille = size(A);
nbcol = taille(2);
for j=1:nbcol %pour chaque colonne
s(j) = somme(A(:,j)); %faire la somme des éléments colonne A(:,j)
end

2) dans un sous répertoire private, fichier somme.m

function s = somme(x)
%SOMME : calcule la somme des éléments du vecteur x
%Input : le vecteur d’éléments x
%Output : la somme des éléments s

n = length(x); %longueur du vecteur x


s=0; %initialiser la somme
for i=1:n
s=s+x(i);
end

Ex : A = [1 2 3; 4 5 6];
somcol(A) %la fonction somcol fera appel à la fonction somme contenue dans le sous répertoire private

F.Nicol – M Files - 20
• Fonctions :
– A chaque fonction est alloué un espace mémoire distinct de l’espace de travail de
base : on a un espace de travail propre à chaque fonction créé lors de l’appel de
la fonction et détruit après son exécution

INPUTS
Espace de travail Espace de travail
appelant de la fonction (principale)

Variables locales
OUTPUTS
OUTPUTS INPUTS

scripts Espace de travail


des sous fonctions

• Scripts :
– Les scripts n’ont pas d’espace de travail qui leur est propre
– L’espace de travail sera partagé avec le programme appelant

F.Nicol – M Files - 21
• Variable locale dans une fonction :

– Variables définies dans le corps de la fonction


– Ne restent pas en mémoire après l’exécution de la fonction
– Les variables locales sont propres à chaque fonction que les utilisent
– Séparées des variables de l’espace de travail de base et des variables des autres
fonctions

• Variable locale dans un script :

– Les scripts n’ont pas d’espace de travail qui leur est propre
– Les variables sont stockées dans l’espace de travail partagé avec le programme
appelant
» depuis une ligne de commande : espace de travail de base
» depuis une fonction : espace de travail de la fonction
• Remarque :

– Si un script utilise et modifie une variable existante dans l’espace de travail relatif
au script alors cette variable sera écrasée

F.Nicol – M Files - 22
• Variable globale :
» La valeur de la variable peut être partagée par plusieurs fonctions et
éventuellement par l’espace de travail de base
» Toute affectation d’une valeur à une variable globale est accessible à toutes
les fonctions et l’espace de travail de base qui l’auront déclarée comme
variable globale

• Déclaration de variables globales :


» Déclarer la variable comme étant globale avant toute utilisation de la
variable

function [vars1, …, varsm] = nomfonc(vare1, …, varen)


global VAR1 VAR2 VAR3 … VARN
….

VAR1, VAR2, …, VARN sont des variables globales


par convention, déclarées en début du fichier après la ligne de
définition de la fonction

» Nom des variables globales : explicite et en majuscules (convention pour


améliorer la lisibilité du code)
» Si des sous fonctions utilisent des variables globales, elle doivent être
déclarées comme globales au début de chaque sous fonction

F.Nicol – M Files - 23
• Exemple 1 : plots des fonctions sinus et cosinus sur un intervalle [a, b]
– variable globale H : subdivision de l’intervalle (H+1 valeurs)

function sinus1(a,b) %fichier sinus1.m


global H
x = a:(b-a)/H:b;
y = sin(x);
plot(x,y);
title('sinus');

function cosinus1(a,b) %fichier cosinus1.m


global H
x = a:(b-a)/H:b;
y = cos(x);
plot(x,y);
title(‘cosinus');

dans la fenêtre de commande :


global H
H=100;

sinus1(0,2*pi)
cosinus1(0,2*pi)

H est une variable globale disponible dans l’espace de travail de base et dans les espaces de travail
des deux fonctions
Son affectation interactive dans la fenêtre de commande sera accessible aux deux fonctions

F.Nicol – M Files - 24
• Exemple 2 : plots des fonctions sinus et cosinus sur un intervalle [a, b]
– variable globale H : subdivision de l’intervalle (H+1 valeurs)

function sinus2(a,b) %fichier sinus2.m


global H
H = 100;
x = a:(b-a)/H:b;
y = sin(x);
plot(x,y);
title('sinus');

function cosinus2(a,b) %fichier cosinus2.m


global H %la valeur affectée à la variable globale H dans la
x = a:(b-a)/H:b; %fonction sinus2 est accessible
y = cos(x);
plot(x,y);
title(‘cosinus');

Appel des fonctions :


sinus2(0,2*pi)
cosinus2(0,2*pi)

Remarque :

– Après un premier appel de la fonction sinus2, la valeur 100 est affectée à la variable globale H : elle est
alors accessible à la fonction cosinus2
– Si la variable H n’est pas déclarée comme globale dans la fenêtre de commande alors elle n’est pas
accessible dans l’espace de travail de base mais seulement dans les espaces de travail des deux fonctions

F.Nicol – M Files - 25
• Afficher les variables globales :

who global
whos global

» afficher seulement les variables globales

Ex : global MAXLEN MAXWID %déclarer MAXLEN et MAXWID comme étant des


%variables globales
MAXLEN = 36; MAXWID = 78; %affecter des valeurs aux variables globales
len = 5; wid = 21;
whos %afficher toutes les variables
whos global %afficher seulement les variables globales

F.Nicol – M Files - 26
• Supprimer des variables globales :

clear global

» supprime toutes les variables globales

clear global VAR1, VAR2, …, VARN

» supprime les variables globales VAR1, VAR2, …, VARN

Ex : clear global MAXLEN %supprime la variable globale MAXLEN


whos global %MAXLEN ne figure plus dans la liste des variables
%globales

• Remarque :
» utiliser la commande clear MAXLEN aura pour effet de supprimer la variable
de l’espace de travail de base, mais elle sera toujours accessible aux
fonctions qui l’auront déclarées comme globale

F.Nicol – M Files - 27
• Problèmes d’utilisation :
à utiliser avec prudence !

» Dans une fonction, donner le même nom à une variable globale que celui
d’une autre variable globale utilisée dans une autre fonction : la variable
utilisée par une fonction sera écrasée par l’autre
» Modifier le nom d’une variable globale : trouver toutes les occurrences du
nom à modifier dans toutes les fonctions l’utilisant
• Alternatives :
» Passer la ou les variables en arguments dans les autres fonctions
» Utiliser une variable persistante

F.Nicol – M Files - 28
• Exemple : problèmes

function sinus3(a,b) %fichier sinus3.m


global H
H = 100;
x = a:(b-a)/H:b;
y = sin(x);
plot(x,y);
title('sinus');

function cosinus3(a,b) %fichier cosinus3.m


global H
H = 10; %la valeur affectée à la variable globale H dans la
x = a:(b-a)/H:b; %fonction sinus3 est modifiée par l’appel de la fonction
y = cos(x); %cosinus3
plot(x,y);
title(‘cosinus');

Appel des fonctions :

sinus3(0,2*pi)
cosinus3(0,2*pi)

L’appel de la fonction cosinus3 va écraser la valeur affectée à la variable globale H lors de l’appel de la
fonction sinus3

F.Nicol – M Files - 29
• Alternative : passer H en argument INPUT dans une des fonctions

function sinus4(a,b) %fichier sinus4.m


global H
H = 100;
x = a:(b-a)/H:b;
y = sin(x);
plot(x,y);
title('sinus');

function cosinus4(a,b,H) %fichier cosinus4.m


x = a:(b-a)/H:b;
y = cos(x);
plot(x,y);
title(‘cosinus');

Appel des fonctions :

sinus4(0,2*pi)
cosinus4(0,2*pi,10) %la valeur affectée à la variable globale H dans la
cosinus4(0,2*pi,100) %fonction sinus4 n’est pas modifiée

• Autre alternative :

• Utiliser une variable persistante

F.Nicol – M Files - 30
• Variable persistante :
– Variable seulement accessible à la fonction dans laquelle elle est déclarée
– Variable « locale » qui reste en mémoire jusqu’à ce que le fichier M soit supprimé ou
modifié
– Différente d’une variable locale :
» Reste stockée en mémoire
» Si la variable persistante n’a pas de valeur affectée au premier appel de la fonction, elle est
initialisée à la matrice vide
– Différente d’une variable globale :
» Connue uniquement de la fonction dans laquelle elle est déclarée
» Ne peut être modifiée par une autre fonction ou par une ligne de commande

• Déclaration :
– Déclarer la variable comme étant persistante avant toute utilisation de la variable

function [vars1, …, varsm] = nomfonc(vare1, …, varen)


persistent VAR1 VAR2 … VARN
» VAR1 VAR2 … VARN : variables locales à la fonction mais dont les valeurs
restent stockées en mémoire
» par convention, déclarées au début du fichier après la ligne de définition de la
fonction

F.Nicol – M Files - 31
• Ex : somme d’un nombre x avec une variable persistante
fonction persistsom.m
function total=persistsom(x)

persistent somme %la variable somme est déclarée comme étant persistante

if isempty(somme) %au premier appel de la fonction, la variable somme est vide


somme = 0; %alors initialiser la variable somme à 0
else %appels suivants de la fonction : la variable persistante n’est pas vide
%la valeur de la variable somme calculée lors de l’appel précédent est
%conservée en mémoire
somme=somme+x; %nouvelle valeur de somme
end
total = somme;

– Premier appel de la fonction :


total=persistsom(1) 0 la valeur de la variable persistante est initialisée à 0
– Deuxième appel de la fonction
total = persistsom(1) 1 somme de la variable persistante (0) et de 1
– Troisième appel de la fonction
total = persistsom(3) 4 somme de la variable persistante (1) et de 3
… etc …
F.Nicol – M Files - 32
• Répertoire par défaut
– Sous Windows : $matlabroot\work (c:\MATLAB6p5\work)
défini lors de l’installation

• Changer le répertoire au démarrage


– Sous Windows : sur l’icône Matlab
• Clic droit >Propriétés
• Menu Raccourci
• Remplir le champ « Démarrer dans : »
par exemple c:\spm2
Être administrateur !!!

– Sous Unix : (cf. opérations au démarrage)


• Créer un fichier startup.m
• Inclure dans le fichier la fonction cd pour changer le
répertoire
• Mettre le fichier startup.m dans le répertoire de
démarrage

F.Nicol – M Files - 33
• Utiliser le fichier startup.m
– Dans \toolbox\local se trouve le fichier matlabrc.m

» Fichier M automatiquement exécuté au démarrage


» Établit le chemin Matlab, la taille par défaut des fenêtres graphiques, …
» Exécute le fichier startup.m s’il existe

– Créer un fichier startup.m contenant des fonctions à exécuter lors de l’ouverture de Matlab

» Fichier startupsav.m : fichier pouvant servir à construire le fichier startup.m


» Dans startup.m : par ex.
addpath \home\me\mytools : place ce chemin dans le SearchPath
cd \home\me\mytools : définit le répertoire au démarrage
spm : exécute automatiquement le fichier spm.m au démarrage

– Sous Unix : placer le startup.m dans le répertoire ~\matlab

F.Nicol – M Files - 34
• Ajouter des options au démarrage
sous Windows

sur l’icône Matlab :


• Clic droit >Propriétés
• Menu Raccourci
• Dans le menu cible, on peut ajouter une ou
plusieurs options à la suite du fichier cible
c:\MATLAB6p5\bin\win32\matlab.exe

Ex :
c:\MATLAB6p5\bin\win32\matlab.exe \r spm

exécute automatiquement le fichier spm.m au


démarrage de Matlab

F.Nicol – M Files - 35
• Créer un fichier finish.m :

– contient des fonctions à exécuter à la fermeture de Matlab


(sauver l’espace de travail, afficher une fenêtre de confirmation
etc …)
– finishsav.m : inclut une fonction save pour sauver l’espace de
travail dans un fichier MAT à la fermeture
– finishdlg.m : affiche une fenêtre de confirmation de fermeture

» Ces fichiers se trouvent dans le répertoire \toolbox\local


» Pas utilisés en tant que tels lors de la fermeture
» Ces fichiers peuvent servir à construire le fichier finish.m

– Possibilité d’ajouter d’autres commandes dans le fichier finish.m

F.Nicol – M Files - 36