1 UPMC - Licence Elec. L2 S2 UE Calcul Scientifique ; initiation à MATLAB (LE20

1 UPMC - Licence Elec. L2 S2 UE Calcul Scientifique ; initiation à MATLAB (LE205) TP4 : Programmation sous MATLAB PREMIERE PARTIE : COURS ET EXEMPLES Thèmes abordés : * Opérations booléennes et logiques, * Scripts et m-files, * Structures algorithmiques, * fonctions et m-files. Remarque IMPORTANTE : dans ce TP, lorsqu’un exemple ou un exercice est donné, vous êtes invité fortement à le réaliser et à en noter le résultat. I. Opérations booléennes et logiques sous MATLAB Nous avons déjà vu aux cours des TP précédents, les opérations arithmétiques suivantes : – exponentiation et transposition – l’exponentiation ^ et .^ – la conjugaison ’ et la transposition .’ – opérateurs multiplicatifs – les produits * et .*, – les divisions à droite /, ./ et à gauche \, .\ – opérateurs additifs et de négation – les opérateurs additifs unitaires et binaires + et - – la négation ~ Dans cette partie, nous verrons comment effectuer des opérations booléennes et logiques sous MATLAB, puis nous verrons dans la suite du TP comment on s’en sert pour la programmation : – opérateurs booléens avec par ordre de priorité : – les opérateurs de comparaison – <, >, <= et >= – égalité ==, non égalité ~= – puis les opérateurs logiques – et logique & – ou logique | A ce propos, il n’existe pas dans MATLAB de vrai type booléen, que false est représenté par la valeur 0 et que true est représentée par la valeur 1 et par extension par toute valeur non nulle, ce qui est confirmé par l’évaluation des expressions suivantes : 2 >> 2&3 >> 2&0 >> 2|3 >> ~3 >> 2= =3 Dans la suite, “tableau booléen” désignera un tableau dont les éléments ont pour valeur 0 ou 1, 0 représentant false et 1 (ou par extension, toute valeur non nulle), représentant true. Les opérateurs booléens sont peut-être ceux dont le comportement peut apparaître le plus déroutant parce qu’il fonctionnent “terme à terme ” : >> a=[1 2 ;1 0] , b=[2 1 ; 1 2] >> a = = b >> a > b >> a & b >> a | b II. Scripts et m-files 1. Scripts Un script est une séquence d’expressions ou de commandes. Un script peut se développer sur une ou plusieurs lignes. Les différentes expressions ou commandes doivent être séparées par une virgule, un point-virgule ou par le symbole de saut de ligne constitué de trois points . . . suivis de <entrer> (le rôle des trois points et d’inhiber le mécanisme d’évaluation lors d’un passage à la ligne). Comme pour une expression unique, la frappe de <entrer> déclenche le processus d’évaluation. Les expressions sont évaluées dans leur ordre d’écriture. Seule la valeur des expression suivie d’une virgule ou d’un saut de ligne est affichée, celle des expressions suivies d’un point-virgule, ne l’est pas. >> a = .5, 2*a, save a, b = pi; 2*b, c = a*b >> ans Ecrire un script est assez fastidieux, aussi MATLAB permet d’enregistrer le texte d’un script sous forme de fichier de texte appelés m-files, en raison de leur extension. 2. Création de m-files Les m-files permettent d’enregistrer les scripts sous forme de fichiers-texte et servent en particulier à définir de nouvelles fonctions (une grande partie des fonctions prédéfinies de MATLAB sont stockées sous forme de m-files dans la toolbox matlab). Les m-files peuvent être crées par n’importe quel éditeur. Dans les versions récentes de MATLAB il existe un petit éditeur intégré que l’on peut appeler à partir du menu file ou à partir de la barre de menu de la fenêtre de commande. 3 Dans la fenêtre de l’éditeur tapez les lignes suivantes : % script - essai . m a = .5; b = pi; c = a * b Sauvez le fichier dans le répertoire de travail sous le nom de essai.m. Remarque : On peut utiliser les techniques du copier/coller pour transférer des parties de script de la fenêtre de commande de MATLAB vers l’éditeur et réciproquement. Il faut prendre garde au fait que dans la fenêtre de commande de MATLAB les sauts de ligne lancent l’évaluation des expressions ; il faut alors utiliser . . . <entrer> à la place des sauts de ligne. 3. Exécution d’un m-file Pour exécuter le script contenu dans un m-file et Il suffit de taper le nom de ce m file dans la fenêtre de commande suivi de < entrer > >> essai Rappel : la présence d’un point-virgule ; à la fin des deux premières lignes du script a neutralisé l’affichage des valeurs de a et b. 4. Eléments d’écriture de m-files a. Commentaires : les lignes de commentaires sont précédées du caractère %. b. Entrées - input et menu La fonction input permet la saisie d’une valeur depuis le clavier. Plus précisément : – Pour les valeurs numériques, n = input(’message’) affiche message et affecte à la variable n la valeur numérique entrée au clavier. – Pour les chaînes de caractères, str = input(’message’,’s’) affiche message et affecte à la variable str la valeur entrée au clavier considérée alors comme une chaîne de caractères. >> n = input(’Entrez la valeur de n ’) >> nom = input(’Entrez votre nom ’,’s’) La fonction menu génère un menu dans lequel l’utilisateur doit choisir une option : result = menu(’titre’, ’opt1’, ’opt2’, . . . , ’optn’) La valeur retournée dans la variable result est égale au numéro de l’option choisie. menu est souvent utilisé en relation avec la structure algorithmique switch-case. >> result = menu(’Traitement’, ’Gauss’, ’Gauss-Jordan’, ’Quitter’) Si l’utilisateur sélectionne Gauss, la variable result prend la valeur 1, la valeur 2 s’il sélectionne Gauss-Jordan et la valeur 3 pour Quitter. 4 c. Affichages - disp - num2str La valeur d’une variable est très simplement affichée en faisant évaluer une expression réduite à la variable elle-même. >> a = [1 2] ; >> a La fonction num2str(x) o`u x est un nombre, retourne la valeur littérale de ce nombre. >> s = [’la valeur de pi est : ’ num2str(pi)] ; >> s La commande disp(t) où t est une chaîne de caractères ou un tableau, affiche la valeur de cette chaîne de caractère ou de ce tableau sans faire référence au nom de la variable. Cette commande sera souvent utilisée avec num2str pour afficher les valeurs des expressions numériques. >> a = [1 2;3 4] ; >> disp(a) >> disp([’ordre de la matrice a : ’ num2str(size(a,1)) ] ); d. Pause La commande pause permet de ménager une pause dans l’exécution d’un m file : – sans argument pause suspend l’exécution jusqu’à ce que l’utilisateur presse sur une touche. – pause(n ) suspend l’exécution pendant n secondes. e. Interaction avec le système d’exploitation MATLAB possède des fonctions et des commandes qui permettent d’obtenir la liste des répertoires accessibles ou matlabpath, la liste des fichiers d’un répertoire donné, les éditer et éventuellement les effacer : – addpath path : ajoute path à la liste matlabpath des répertoires accessibles par MATLAB ; – p = pwd : retourne dans p le chemin d’accès au répertoire de travail actuel ; – cd path : change le répertoire de travail pour celui spécifié par path ; – d = dir ou d = ls : retourne dans d la liste des fichiers du répertoire de travail ; – what : retourne la liste des m-files et des mat-files du répertoire de travail ; – edit test : édite le m-file test.m, identique à Open dans le menu File ; – delete test.m : efface le m-file test.m ; – type test : affiche le m-file test.m dans la fenêtre de commande. 5 III. Structures algorithmiques 1. Sélection - if . . . end et if . . . else . . . end – if (expression booléenne) / script / end – if (expression booléenne) / script si vrai / else / script si faux / end Le symbole / remplace l’un des symboles séparateur : virgule (,), point-virgule ( ;) ou saut de ligne. L’usage du point-virgule est vivement conseillé pour éviter les affichages souvent redondants. Dans d’anciennes versions de MATLAB et en mode commande, il est indispensable de faire précéder < enter > par une séquence de trois points ( . . . ) pour passer à la ligne sans déclancher le processus d’évaluation. >> m = -1; >> if (m<0), a =-m, end Utilisation de elseif Lorsqu’il y a plus de deux alternatives, on peut utiliser la structure suivante : if (exp1) script1 (évalué si exp 1 est vraie) elseif (exp2) script2 (évalué si exp 2 est vraie) elseif (exp3) . . . else script (évalué si aucune des expressions exp1, exp2, . . . n’est vraie) end 2. Répétition - for . . . end for (k = liste) / script / end Le symbole / représente comme dans le paragraphe précédent un symbole séparateur virgule (,), point-virgule ( ;) ou saut de ligne. D’autre part, il est préférable uploads/s3/ tp4.pdf

  • 31
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager