Matlab M Files

36
F.Nicol – M Files - 1 Florence Nicol Unité de Neurosciences Cognitives Université Catholique de Louvain Louvain-la-Neuve, Belgique [email protected] 15 Septembre 2004

Transcript of Matlab M Files

Page 1: Matlab M Files

F.Nicol – M Files - 1

Florence Nicol

Unité de Neurosciences Cognitives

Université Catholique de Louvain

Louvain-la-Neuve, Belgique

[email protected]

15 Septembre 2004

Page 2: Matlab M Files

F.Nicol – M Files - 2

• 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)

Ex : x fonction sinus sinus(x)

Fonction : instructions agissantsur les INPUTSINPUTS OUTPUTS

Met en relation des variables d’entrés (INPUTS)et des variables de sortie (OUTPUTS)

Page 3: Matlab M Files

F.Nicol – M Files - 3

• 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 sucrepréchauffer le four à 180°Cfaire fondre le chocolat ajouter le beurre au chocolatbattre les œufs avec le sucreincorporer la farinemélanger avec le mélange précédentverser dans un moulemettre 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, beurreFonction : 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

recette

Page 4: Matlab M Files

F.Nicol – M Files - 4

• 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 texteedit 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

Page 5: Matlab M Files

F.Nicol – M Files - 5

• 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’aidesé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

Page 6: Matlab M Files

F.Nicol – M Files - 6

• 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

Page 7: Matlab M Files

F.Nicol – M Files - 7

• 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éesD = squeeze(D);image_start = 4; %première imageimage_end = 18; %dernière imageimage_num = image_start; %initialisation du compteur d’images nbl = 3; %nombre de lignes et de colonnes dans la fenêtre graphiquenbcol = 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 cerveauimage(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

endhold off;

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

Page 8: Matlab M Files

F.Nicol – M Files - 8

• 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)

• Définition d’une fonction :

function vars = nomfonc(vare)

séquence d’instructions

vars = variable de sortie de la fonction (input)vare = variable d’entrée de la fonction (output)nomfonc = nom de la fonctionséquence d’instructions = corps de la fonction

mot-clé

Nom de la fonction

INPUTOUTPUT

Corps de la fonction

Page 9: Matlab M Files

F.Nicol – M Files - 9

• 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 %)

Page 10: Matlab M Files

F.Nicol – M Files - 10

• 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 commanderetourne 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 fonctionEx : 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

Page 11: Matlab M Files

F.Nicol – M Files - 11

• Exemple 1 : construire une fonction qui calcule la somme des éléments d’un vecteurdans 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 xs=0; %initialiser la sommefor 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 commandeou

somme(1:10) %on peut directement entrer les valeurs de l’input

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

Page 12: Matlab M Files

F.Nicol – M Files - 12

• Définition d’une fonction : multiples inputs/outputs

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

séquence d’instructions

vars1, …, varsm = variables de sortie de la fonction (inputs)vare1, …, varen = variables d’entrée de la fonction (outputs)nomfonc = nom de la fonctionséquence d’instructions = corps de la fonction

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

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

mot-clé

Nom de la fonction

INPUTSOUTPUTS

Corps de la fonction

Page 13: Matlab M Files

F.Nicol – M Files - 13

• 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

Page 14: Matlab M Files

F.Nicol – M Files - 14

• 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éesD = 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 cerveauimage(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

endhold off;

Appel de la fonction : image_start = 4; image_end = 18; nbl = 3; nbcol = 5;sliceplot(image_start,image_end,nbl,nbcol)

ousliceplot(4, 18, 3, 5)

Page 15: Matlab M Files

F.Nicol – M Files - 15

• 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 BG = A;

elseG = B;

endif C>G %comparer avec le troisième nombre CG = C;

end

Appel de la fonction :max3(5, -1, 10)

ouA = 5; B = -1; C = 10;max3(A, B, C)

Page 16: Matlab M Files

F.Nicol – M Files - 16

• 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 Bmax = A;min = B;

elsemax = B;min = A;

endif C>max %comparer avec le troisième nombre Cmax = C;

elseif C<minmin = C;

enddist = 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)

Page 17: Matlab M Files

F.Nicol – M Files - 17

• 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 fonction2. 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 »

Page 18: Matlab M Files

F.Nicol – M Files - 18

• 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 meanmed = median(u,n); %appel de la sous fonction median

function a = mean(v,n) %sous fonction%calcule la moyenne du vecteur v de longueur na = sum(v)/n;

function m = median(v,n) %sous fonction%calcule la médiane du vecteur v de longueur nw = 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)

Page 19: Matlab M Files

F.Nicol – M Files - 19

• 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

Page 20: Matlab M Files

F.Nicol – M Files - 20

• 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 xs=0; %initialiser la sommefor 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

Page 21: Matlab M Files

F.Nicol – M Files - 21

• 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

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

Espace de travail appelant

Espace de travail de la fonction (principale)

INPUTS

OUTPUTS

Espace de travaildes sous fonctions

INPUTSOUTPUTS

scripts

Variables locales

Page 22: Matlab M Files

F.Nicol – M Files - 22

• 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

Page 23: Matlab M Files

F.Nicol – M Files - 23

• 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 globalespar 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

Page 24: Matlab M Files

F.Nicol – M Files - 24

• 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.mglobal Hx = a:(b-a)/H:b;y = sin(x);plot(x,y);title('sinus');

function cosinus1(a,b) %fichier cosinus1.mglobal Hx = a:(b-a)/H:b;y = cos(x);plot(x,y);title(‘cosinus');

dans la fenêtre de commande :global HH=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 travaildes deux fonctionsSon affectation interactive dans la fenêtre de commande sera accessible aux deux fonctions

Page 25: Matlab M Files

F.Nicol – M Files - 25

• 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.mglobal HH = 100;x = a:(b-a)/H:b;y = sin(x);plot(x,y);title('sinus');

function cosinus2(a,b) %fichier cosinus2.mglobal H %la valeur affectée à la variable globale H dans lax = 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

Page 26: Matlab M Files

F.Nicol – M Files - 26

• 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

Page 27: Matlab M Files

F.Nicol – M Files - 27

• 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 MAXLENwhos 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

Page 28: Matlab M Files

F.Nicol – M Files - 28

• 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

Page 29: Matlab M Files

F.Nicol – M Files - 29

• Exemple : problèmes

function sinus3(a,b) %fichier sinus3.mglobal HH = 100;x = a:(b-a)/H:b;y = sin(x);plot(x,y);title('sinus');

function cosinus3(a,b) %fichier cosinus3.mglobal HH = 10; %la valeur affectée à la variable globale H dans lax = 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 lafonction sinus3

Page 30: Matlab M Files

F.Nicol – M Files - 30

• Alternative : passer H en argument INPUT dans une des fonctions

function sinus4(a,b) %fichier sinus4.mglobal HH = 100;x = a:(b-a)/H:b;y = sin(x);plot(x,y);title('sinus');

function cosinus4(a,b,H) %fichier cosinus4.mx = 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 lacosinus4(0,2*pi,100) %fonction sinus4 n’est pas modifiée

• Autre alternative :

• Utiliser une variable persistante

Page 31: Matlab M Files

F.Nicol – M Files - 31

• 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

Page 32: Matlab M Files

F.Nicol – M Files - 32

• Ex : somme d’un nombre x avec une variable persistantefonction 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 videsomme = 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

endtotal = 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 fonctiontotal = persistsom(1) 1 somme de la variable persistante (0) et de 1

– Troisième appel de la fonctiontotal = persistsom(3) 4 somme de la variable persistante (1) et de 3… etc …

Page 33: Matlab M Files

F.Nicol – M Files - 33

• 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

Page 34: Matlab M Files

F.Nicol – M Files - 34

• 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 SearchPathcd \home\me\mytools : définit le répertoire au démarragespm : exécute automatiquement le fichier spm.m au démarrage

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

Page 35: Matlab M Files

F.Nicol – M Files - 35

• 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 ciblec:\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

Page 36: Matlab M Files

F.Nicol – M Files - 36

• 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