F.Nicol – M Files - 1 Florence Nicol Unité de Neurosciences Cognitives Universi
F.Nicol – M Files - 1 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 - 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 agissant sur les INPUTS INPUTS OUTPUTS Met en relation des variables d’entrés (INPUTS) et des variables de sortie (OUTPUTS) 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 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 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 recette 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 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 - 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’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 - 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 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é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 - 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 fonction séquence d’instructions = corps de la fonction mot-clé Nom de la fonction INPUT OUTPUT Corps de la fonction 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 %) 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 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 - 11 • 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 - 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 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) mot-clé Nom de la fonction INPUTS OUTPUTS Corps de la fonction 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 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ées D = squeeze(D); image_num = image_start; uploads/Industriel/ matlab-m-files.pdf
Documents similaires
-
17
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mar 16, 2021
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.4248MB