Example: barber

TP1 : Programmes simples avec Matlab

Institut Galil ee - Universit e Paris 13 Introduction `a MatlabSup Galil ee - Ing enieur 1`ere ann ee2016 2017TP1 : Programmes simples avec MatlabDans ce TP, nous verrons les mot clefifpermettant de faire ex ecuter du code plus complexe `a Matlab ,et obtenir ainsi des Programmes plus int eressants. Nous verrons aussi d autres fonctionnalit es de Matlabafin de pouvoir ecrire du code plus devez avoir termin e le TP0 avant de commencer ce TP. De plus, l utilisation ex-plicite des boucles est interdite (sauf mention contraire) dans ce Encore des L op erateur : L op erateur:permet, comme vous l avez vu au pr ec edent TP, de r ecup erer des ensembles de ligneset/ou colonnes d une matrice, et former une sous-matrice.

Institut Galil ee - Universit e Paris 13 Introduction a Matlab Sup Galil ee - Ing enieur 1 ere ann ee 2016 { 2017 TP1 : Programmes simples avec Matlab

Tags:

  Programme, Simple, Matlab, Cave, Programmes simples avec matlab

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Advertisement

Transcription of TP1 : Programmes simples avec Matlab

1 Institut Galil ee - Universit e Paris 13 Introduction `a MatlabSup Galil ee - Ing enieur 1`ere ann ee2016 2017TP1 : Programmes simples avec MatlabDans ce TP, nous verrons les mot clefifpermettant de faire ex ecuter du code plus complexe `a Matlab ,et obtenir ainsi des Programmes plus int eressants. Nous verrons aussi d autres fonctionnalit es de Matlabafin de pouvoir ecrire du code plus devez avoir termin e le TP0 avant de commencer ce TP. De plus, l utilisation ex-plicite des boucles est interdite (sauf mention contraire) dans ce Encore des L op erateur : L op erateur:permet, comme vous l avez vu au pr ec edent TP, de r ecup erer des ensembles de ligneset/ou colonnes d une matrice, et former une sous-matrice.

2 Pour rappel :>> disp(a)6 6 2 6 4 27 2 0 3 3 47 6 1 9 7 44 0 7 0 7 6>> b = a(2:3, 4:6);>> disp(b)3 3 49 7 4On peut aussi r ecup erer l int egralit e des el ements d une matrice, sous forme d un vecteur colonne (les el ements sont plac es selon leur num ero d ordre dans la matrice), en faisant :>> c = b(:);>> disp(c)393744 Cependant, l op erateur:peut etre utilis e en dehors de toute matrice. Regardez par exemple ce code :>> d = 2:8;>> disp(d)2 3 4 5 6 7 8L op erateur:permet en r ealit e de g en erer un vecteur ligne de tous les entiers entre le nombre donn e`a gauche (2), et le nombre donn e `a droite inclus (8).

3 Pour ceux qui connaissent Python :En Python, un op erateur similaire existe, qui s appellerange. Cependant, en Python, le nombre donn e en second param`etre derange(ici, ce serait le 8) estexclu de la liste des nombres peut rajouter un troisi`eme param`etre pour contr oler le pas d incr ementation entre les el ementsg en er es. Par exemple, pour obtenir tous les entiers allant de 3 `a 30 de 5 en 5, on ferait :>> d = 3:5:30;>> disp(d)3 8 13 18 23 28Ce nouveau param`etre, qui vient s intercaler entre le nombre contr olant le d ebut de la liste et lenombre contr olant la fin de la liste permet de choisir le pas entre chaque el ement de la liste r aucun pas n est pr ecis e, alors un pas de 1 est utilis e par d tous ces exemples, des nombres entiers etaient utilis es ; cependant, il est tout `a fait possibled utiliser des nombres r eels avec l op erateur.

4 QuestionsG en erez un vecteur ligne contenant tous les nombres r eels entre 0 et 1 avec au plus deux chiffressignificatifs apr`es la Une nouvelle fa con de lire les el ements d une matriceIl est maintenant possible de comprendre ce que fait un tel code :>> b = a(2:3, 5);L utilisation du symbole:g en`ere un vecteur d indices qui est utilis e pour indiquer toutes les lignesque l on souhaite r ecup erer dans la matriceb. On peut donc utiliser un vecteur ligne afin de r ecup ererles colonnes et/ou lignes de son choix dans une matrice :>> disp(a)6 6 2 6 4 27 2 0 3 3 47 6 1 9 7 44 0 7 0 7 6>> f = a(2:3, [1 3 4 6]);>> disp(f)7 0 3 47 1 9 4On peut aussi utiliser, comme vu pr ec edemment, un troisi`eme param`etre afin d appliquer un pasit eratif diff erent de 1 `a l op erateur::>> g = a(:, 1:2:6);>> disp(g)6 2 47 0 37 1 74 7 7Si l on demande, par erreur, des indices de lignes ou de colonnes non entiers, Matlab nous le signalepar une erreur :>> g = a(:, 1 :6).

5 Warning: Integer operands are required for colon operator when used as indexQuestions1. Ecrivez un script qui demande `a l utilisateur deux entiersnetm, et g en`ere une matriceMde nombres al eatoires entre 0 et 100 de taillen m. A la suite de votre script, g en erez unesous matrice avec uniquement les el ements deM`a un indice de ligne et de colonne pair. Votrecode doit fonctionner quel que soit la taille de Ecrivez un script qui demande `a l utilisateur un entiernet g en`ere un vecteur lignevde taillende nombres al eatoires entre 5 et 10. Ensuite, g en erez un vecteurwqui est le miroir dev(le premier el ement devest `a la derni`ere place dew, le seconde el ement devest `a l avantderni`ere place dew, etc) sans utiliser le mot Ecrivez un script qui g en`ere un vecteur lignevde nombres al eatoires entre 0 et 10, poss edant7n el ements.

6 Puis, calculez dans un vecteur lignesla somme partielle, par paquets de 7 el ements, du vecteurv. Le premier el ement desest donc la somme des 7 premiers el ementsdev, le second el ement desest la somme des sept el ements suivants dev, etc. Par exemple :>> disp(v)3 1 4 1 3 3 4 5 3 1 1 1 4 1>> disp(s)19 16 Les fonctionsreshapeetsumpourraient vous etre Le test conditionnel ifLe test ifLe mot clefifpermet d ex ecuter du code seulement si une condition est vraie. Regardez ce code :x=-2;y=0;if x<0disp( x est negatif )y=-1;enddisp(y)disp( FIN )A l aide du debugger, explorez ce que fait ce code. Quelle diff erence y a-t-il sixest plus petit quez ero ou plus grand ?

7 Les lignes 4 et 5 du code est-elle toujours ex ecut ee ? Et les lignes 7 et 8 ? A quoi sertle mot clefend?Le test if/elseLe mot clefelse, qui doit imp erativement suivre unif, permet aussi d ex ecuter du code si la conditiondu if n a pas et e respect ee :x=-2;y=0;if x<0disp( x est negatif )y=-1;elsedisp( x est positif )y=1;enddisp( FIN )A l aide du debugger, explorez ce que fait ce code. Que fait le mot clefelseici ? Que se passe-t-il sixest positif ? Et sixest n egatif ? Quelles sont les lignes de code qui sont toujours ex ecut ees ?Le test if/elseif/elseEnfin, il est possible d utiliser le mot clefelseifqui permet d ex ecuter du code si la condition duifn a pas et e respect ee, en y ajoutant une condition :x=-2;y=0;if x<0disp( x est negatif )y=-1;elseif x==0disp( x est nul )y=0;elsedisp( x est positif )y=1;enddisp( FIN )A l aide du debugger, explorez ce que fait ce code.

8 Que fait le mot clefelseifici ? Que se passe-t-il sixest positif, n egatif ou nul ? Quelles sont les lignes de code qui sont toujours ex ecut ees ?Questions1. Ecrivez un script qui demande un nombre `a l utilisateur et affiche sa valeur Ecrivez un script qui demande un nombrex`a l utilisateur entre 0 et 1. Si l utilisateur setrompe et quexest n egatif, on remplace sa valeur par z ero, et s il est sup erieur `a 1, onremplace sa valeur par Ecrivez un script qui demande deux nombres `a l utilisateur, et affiche le plus grand des r`egles du ifVoici quelques r`egles pour ecrire ce que l on appelle unbloc if: En tout premier, vient un seul mot clefif, avec une condition.

9 Ensuite, z ero, un ou plusieurs mot clefselseifsuivent, chacun avec une condition. Ensuite, z ero ou un mot clefelsesuit, sans aucune condition marqu ee apr`es. Enfin, le mot clefendmarque la fin du le cas o`u Matlab rencontre un blocifcorrectement ecrit, il agit ainsi : Il evalue la condition duifet, si elle est vraie, il ex ecute le code apr`es leifjusqu `a rencontrer lemot clefend,elseifouelse. Sinon, il evalue la condition duelseif(s il y en a un) suivant leif, et si elle est vraie, ex ecute lecode apr`es leelseifjusqu `a rencontrer le mot clefend,elseifouelse. Il recommence l etape pr ec edente tant qu il existe deselseif`a evaluer.

10 Enfin, s il rencontre le mot clefelse, il ex ecute le code situ e apr`es jusqu `a renontrer le mot clefend. A chaque etape, apr`es l ex ecution d un code apr`es unif,elseifouelse, le programme sautejusqu au mot clefendet reprend ici son ex un blocifne poss`ede pas le mot clefelse, alors il est tout `a fait possible qu aucune ligne de codede ce bloc ne soit ex ecut ee :x=-2;y=0;if x<0disp( x est negatif )y=-1;elseif x==0disp( x est nul )y=0;enddisp( FIN )Que se passe-t-il ici sixvaut 3 ?Il est tout `a fait possible, `a l int erieur d un code apr`es unif, elseifouelse, de placer de nouveau unblocif:x=-2.


Related search queries